在.net中使用Gmail发送邮件

gmail|发送邮件

在项目开发中,发送邮件时一种非常常见的功能。一般的情况下,大型的公司都有自己的邮件系统,我们可以直接通过公司的Pop/SMTP Server进行邮件的发送和接收。不过,对于一些小公司不具有这样的条件,他们一般通过一些公共的邮件服务通过商提供的邮件服务。比如Sina,163就是很好的、常用的邮件服务。不过相比之下,我还是习惯使用Google Gmail。

一、在.net中通过Gmail发送邮件

我们知道,SMTP是我们最常用的邮件传输的协议。通过SMTP方式,我们只需要配置相应的STMP Server和Port,使用我们的帐号和密码登录到STMP Server,理论上我们就可以进行邮件的发送了。对于Google Gmail,对应的信息如下:

Pop3 Server (Port: 995) :pop.gmail.com, SSL

SMTP Server (Port: 25, 465, 587):smtp.gmail.com, TLS

你通过你注册的Gmail帐号和密码就可以登录smtp.gmail.com。下面是一段简单的C# Code。

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace Artech.Mail.ConsoleApp
{
    class Program
    {

        const string ADDRESS_FROM = "from@gail.com";
        const string ADDRESS_TO = "to@gmail.com";
        const string USER_ID = "MyAccount";
        const string PASSWORD = "password";
        const string SMTP_SERVER = "smtp.gmail.com";
        const int PORT = 587;
 
        static void Main(string[] args)
        {

                SendMail(SMTP_SERVER, PORT);
                Console.Read();       
          
        }

        static void SendMail(string smtpServer, int port)

        {
            SmtpClient mailClient = new SmtpClient(smtpServer, 587);
            mailClient.EnableSsl = true;
            NetworkCredential crendetial = new NetworkCredential(USER_ID, PASSWORD);

            mailClient.Credentials = crendetial;
            MailMessage message = new MailMessage(ADDRESS_FROM, ADDRESS_TO, "This is a subject", "This is the body of the mail");
          
            mailClient.Send(message);
            Console.WriteLine("Mail has been sent to '{0}'", ADDRESS_TO);
        }
    }
}

熟悉System.Net.Mail. SmtpClient,对上面的Code应该是很熟悉了,在这里我就不想对上面的逻辑多做介绍了。不过我需要补充几点的是:

1.通过Gmail,你只能以你登录到SMTP Server的Account的名义对外发信,以上面为例,我以” MyAccount”最为Gmail的Account登录,向Email address 为to@gmail.com发送邮件,虽然在SmtpClient.Send方法中的我指定的From address为from@gail.com,当收信人受到该邮件的时候,邮件的发件人是MyAccount@gail.com,不会为from@gail.com。这些很有必要的,可以防止你利用别人的名义发送邮件。这种机制并不是通用的,我就和同事开过这样的玩笑:通过公司的STMP Server以另一个同事的名义向他发邮件。

2.虽然Google对外宣称他们开发的SMTP Server的Port为25,465和587,但是在代码中,我使用25和587一切正常,当时当我使用465的时候,怎么也发不出去。但是当我在Outlook中把Port配置为465的时候,发送邮件也正常。我还没来得及查阅到底是什么问题。知道原因的朋友,请不吝赐教。

3.对于像这种邮件服务功能的代码,我们一般写成可配置的。因为对于对于帐户和密码,甚至是STMP Server,都有可能经常的变换。但是我们不用通过常用的<AppSettings>来配置,也不用定义我们的Custom ConfigurationSection。因为Configuration System已经为我们定义的内置的<mailSettings>来配置邮件相关的信息。比如:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <mailSettings>
      <smtp from="MyAccount@gmail.com">
        <network host="smtp.gmail.com"
                 password="password"
                 port="587"
                 userName=" MyAccount @gmail.com"/>
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

对于Gmail,from实际上没有什么意义。

现在我们就可以进一步地简化我们的Managed code了:

static void SendMail()
        {

            SmtpClient mailClient = new SmtpClient();
            mailClient.EnableSsl = true;
            MailMessage message = new MailMessage(ADDRESS_FROM, ADDRESS_TO, "This is a subject", "This is the body of the mail");

            mailClient.Send(message);
            Console.WriteLine("Mail has been sent to '{0}'", ADDRESS_TO);
        }

 

时间: 2024-12-03 22:18:23

在.net中使用Gmail发送邮件的相关文章

在ASP.NET2.0中通过Gmail发送邮件的代码_实用技巧

    在这里我们主要是使用Gmail,究其原因,是因为,我在使用Gmail的邮箱发送邮件的时候,遇到一小小的困难,而使用163等邮箱的时候,没遇到这个问题.     在ASP.NET2.0中,发送邮件是很简单的,我们主要使用来自命名空间System.Net.Mail中的几个类,MailMessage和SmtpClient.     核心代码是很简洁的,如下:     复制代码 代码如下:  string to = "这里填写接收者的Email地址";      string from

在Managed Code通过Google Gmail发送邮件以及如何通过Outlook配置Gmail

在项目开发中,发送邮件时一种非常常见的功能.一般的情况下,大型的公司都有自己的邮件系统,我们可以直接通过公司的Pop/SMTP Server进行邮件的发送和接收.不过,对于一些小公司不具有这样的条件,他们一般通过一些公共的邮件服务通过商提供的邮件服务.比如Sina,163就是很好的.常用的邮件服务.不过相比之下,我还是习惯使用Google Gmail. 接下来,我将介绍两方面来介绍今天的内容,如果通过Managed code通过Gmail进行邮件的发送,以及如何在Outlook中配置Gmail.

php中利用PHPMailer插件实现gmail发送邮件

HPMailer 是一个专门用于php语言的邮件发送类,功能十分地强大,丰富了 PHP 本身单一的 mail() 函数.支持 SMTP 等.附件等. PHPMailer 遵守 LGPL 授权,可以免费下载. 下载地址:http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/PHPMailer%20v5.1/PHPMailer_v5.1.zip/download 使用方法(只说法邮件,其收邮件的功能飘过):

在asp.NET 中使用SMTP发送邮件的实现代码

核心代码:复制代码 代码如下: public class Mail { #region 邮件参数 static public string accountName = System.Configuration.ConfigurationManager.AppSettings["SmtpAccountName"]; static public string password = System.Configuration.ConfigurationManager.AppSettings[&

在ASP中使用CDO发送邮件

在ASP中使用CDO发送邮件   在ASP(Active Server Pages)中发送邮件不是件困难的事情,需要的条件就是使用CDO组件(Collaborative Data Object),它是谁NT Option Pack 4安装后就有的.为了确认CDO组件已经正确安装在你的机器上,选择"开始/控制面板/添加.删除程序/NT Option Pack 4",看看是否SMTP服务已经安装.如果没有安装,那么运行下面显示的代码时将会发生错误(错误信息类似于"Invaild

怎样在Word2007中直接批量发送邮件

  当在Word2007中编辑好一篇文档,如果想要省时间直接在Word2007中发送给他人怎么操作呢?下面小编就来教大家如何在Word2007中直接批量发送邮件. 怎样在Word2007中直接批量发送邮件 1.启动Word2007,打开我先前制作好的通知文件,单击菜单栏--邮件--选择收件人--使用现有列表. 2.弹出选取数据源对话框,双击邮箱地址xls文件. 3.选择插入文件的表格,我们选择sheet1. 4.插入合并域,勾选数据库域,选择姓名,插入. 5.然后光标单击需要填入邮箱地址的下划线

在asp.NET 中使用SMTP发送邮件的实现代码_实用技巧

核心代码: 复制代码 代码如下: public class Mail { #region 邮件参数 static public string accountName = System.Configuration.ConfigurationManager.AppSettings["SmtpAccountName"]; static public string password = System.Configuration.ConfigurationManager.AppSettings[

如何在outlook中设置Gmail

在 Gmail 帐户 中启用 POP. 打开 Outlook 或 Outlook Express. 单击"工具"菜单,然后选择"帐户...". 单击"添加",然后单击"邮件..." 在"显示名:"字段中输入您的姓名,然后单击"下一步". 在"电子邮件地址:"字段中输入您的完整 Gmail 电子邮件地址 (username@gmail.com),然后单击"下一

在django1.2+python2.7环境中使用send_mail发送邮件

最近在加紧学习python2.7+django1.2,操作系统使用的是ubutntu11. 而且充分利用了SAE(Sina AppEngine)几乎免费的云服务,还可以更好的实践在生产环境的效果. 新浪SAE的python环境的详细情况,可以参看:SAE Python 开发者手册. 今天学到了发送邮件这一课.刚开始没有使用sae的邮件服务,直接使用django.core.mail.send_mail函数. 首先在settings.py文件中设置如下 # email function, email