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

在项目开发中,发送邮件时一种非常常见的功能。一般的情况下,大型的公司都有自己的邮件系统,我们可以直接通过公司的Pop/SMTP

Server进行邮件的发送和接收。不过,对于一些小公司不具有这样的条件,他们一般通过一些公共的邮件服务通过商提供的邮件服务。比如Sina,163就是很好的、常用的邮件服务。不过相比之下,我还是习惯使用Google
Gmail。

接下来,我将介绍两方面来介绍今天的内容,如果通过Managed

code通过Gmail进行邮件的发送,以及如何在Outlook中配置Gmail。今天介绍的东西和技术不是很沾边。只是觉得具有一定的实用性,同时介绍一下我在使用过程遇到的一些问题,希望给大家在使用过程中提供一些参考。

一、在Managed code中通过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# 代码。

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Text;
   4: using System.Net.Mail;
   5: using System.Net;
   6:  
   7: namespace Artech.Mail.ConsoleApp
   8: {
   9:     class Program
  10:     {
  11:         const string ADDRESS_FROM = "from@gail.com";
  12:         const string ADDRESS_TO = "to@gmail.com";
  13:         const string USER_ID = "MyAccount";
  14:         const string PASSWORD = "password";
  15:         const string SMTP_SERVER = "smtp.gmail.com";
  16:         const int PORT = 587;
  17:  
  18:         static void Main(string[] args)
  19:         {
  20:                 SendMail(SMTP_SERVER, PORT);
  21:                 Console.Read();        
  22:            
  23:         }
  24:  
  25:         static void SendMail(string smtpServer, int port)
  26:         {
  27:             SmtpClient mailClient = new SmtpClient(smtpServer, 587);
  28:             mailClient.EnableSsl = true;
  29:             NetworkCredential crendetial = new NetworkCredential(USER_ID, PASSWORD);
  30:             mailClient.Credentials = crendetial;
  31:             MailMessage message = new MailMessage(ADDRESS_FROM, ADDRESS_TO, "This is a subject", "This is the body of the mail");
  32:            
  33:             mailClient.Send(message);
  34:             Console.WriteLine("Mail has been sent to '{0}'", ADDRESS_TO);
  35:         }
  36:     }
  37: }

熟悉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>来配置邮件相关的信息。
   1: <?xml version="1.0" encoding="utf-8" ?>
   2: <configuration>
   3:   <system.net>
   4:     <mailSettings>
   5:       <smtp from="MyAccount@gmail.com">
   6:         <network host="smtp.gmail.com"
   7:                  password="password"
   8:                  port="587"
   9:                  userName=" MyAccount @gmail.com"/>
  10:       </smtp>
  11:     </mailSettings>
  12:   </system.net>
  13: </configuration>

对于Gmail,from实际上没有什么意义。现在我们就可以进一步地简化我们的代码。

   1: static void SendMail()
   2: {
   3:     SmtpClient mailClient = new SmtpClient();
   4:     mailClient.EnableSsl = true;
   5:     MailMessage message = new MailMessage(ADDRESS_FROM, ADDRESS_TO, "This is a subject", "This is the body of the mail");
   6:     mailClient.Send(message);
   7:     Console.WriteLine("Mail has been sent to '{0}'", ADDRESS_TO);
   8: }

二、通过Outlook来配置Gmail

Outlook作为专业的邮件管理的办公软件,为我们进行邮件的接收和发送、以及邮件的管理提供了极大的便利。下面我来简单介绍一下如何通过Outlook来配置Gmail。

步骤一

登录Gmail,通过Settings Navigator进行Gmail的设置。


步骤二

选择”Forwarding and POP” Tab中选中Enable POP for all mail (even mail that's already been downloaded) 选项。


步骤三

在Outlook中,通过Tools->Options->Mail
Setup->Email accounts进入Account Setting对话框。如果你已经有了一个Account,那么在第一个tab
“Email”中更新的该Account。进行如下设置。如果你需要新创建一个account, 请直接到Step6

步骤四:

点击 “More Setting”,弹出”Internet E-mail setting”对话框,选择”Advance” Table,进行如下设置:

步骤五:

选择”Outgoing Server” Tab,做如下设置

步骤六:

Account Setting对话框中Click "new..."按钮,就如"Add New Email Account"对话框,选择第一个选项。
步骤七:

Click “Next”,选择"Manually cinfigure server seetings or additional server types" Check Box.


步骤八:

点击 “Next”,选择第一个选项"Internet E-Mail",接下来的配置就和上面一样了。

作者:蒋金楠
微信公众账号:大内老A
微博:www.weibo.com/artech
如果你想及时得到个人撰写文章以及著作的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号(原来公众帐号蒋金楠的自媒体将会停用)。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文链接

时间: 2024-08-02 21:38:24

在Managed Code通过Google Gmail发送邮件以及如何通过Outlook配置Gmail的相关文章

在.net中使用Gmail发送邮件

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

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 2.0数据教程之七十五: 用Managed Code创建存储过程和用户自定义函数

返回"ASP.NET 2.0数据教程目录" ASP.NET 2.0数据教程之七十五: 用Managed Code创建存储过程和用户自定义函数(下) 第八步:从表现层调用Managed Stored Procedures 当对数据访问层和 业务逻辑层进行扩充以支持调用GetDiscontinuedProducts 和 GetProductsWithPriceLessThan这2种managed stored procedures后,我们可以 在一个ASP.NET页面里展示这些存储过程的结

在ASP.NET 2.0中操作数据之七十四:用Managed Code创建存储过程和用户自定义函数(下部分)_自学过程

第八步:从表现层调用Managed Stored Procedures 当对数据访问层和业务逻辑层进行扩充以支持调用GetDiscontinuedProducts 和 GetProductsWithPriceLessThan这2种managed stored procedures后,我们可以在一个ASP.NET页面里展示这些存储过程的结果了. 打开AdvancedDAL文件夹里的ManagedFunctionsAndSprocs.aspx页面,从工具箱拖一个GridView控件到设计器,设其ID

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

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

在ASP.NET 2.0中操作数据之七十三:用Managed Code创建存储过程和用户自定义函数(上部分)_自学过程

导言: 数据库,比如Microsoft's SQL Server 2005使用Transact-Structured Query Language (T-SQL)来插入.修改.检索数据.绝大多数数据库系统都包含constructs来对一系列的SQL statements进行分组,这些statements可以作为单独的单元来执行.存储过程就是一个例子,另一个例子是用户自定义函数(UDFs), 我们将在第9步进行详细的探讨. SQL是设计来处理一系列数据的. SELECT,UPDATE,和DELET

8点1氪:Google内测邮箱集成应用Inbox或颠覆Gmail

摘要: Google内测邮箱集成应用Inbox或颠覆Gmail Google在今日针对一些Gmail用户发出了邀请,测试Gmail团队研发的集成了to-do list,包裹追踪等功能的邮箱应用Inbox. Inbox包括移动端和Web端产品,以信 Google内测邮箱集成应用Inbox或颠覆Gmail Google在今日针对一些Gmail用户发出了邀请,测试Gmail团队研发的集成了to-do list,包裹追踪等功能的邮箱应用Inbox. Inbox包括移动端和Web端产品,以信息流的方式显示

Google旗下的免费网络邮件服务产品Gmail

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 凭借良好的隐私保护和超大的存储空间,以及支持在线聊天等功能而备受用户青睐.近期,Google在Gmail上的改进也有很多,例如重新调整Gmail聊天界面.谷歌搜索将显示Gmail内容等等. 而近日,Google再度推出了Gmail的的一个新功能,即多用户登录功能.以前,用户必须要重新输入账号.密码才能登录自己的Gmail账号.而现在,Gmail登录框被改进为类似操作

Google.com在24日晚突然沉睡 Gmail和AdWords全部中断

2009年6月24日晚,笔者正准备在google.com上搜索个东西,突然发现google主站打不开了.一开始以为是自己的网络有问题, 但是看了看其他网站,都很正常.再试着访问一下Gmail邮箱和AdWords,也都打不开了.看了下时间,21点30左右.QQ群里也一片躁动,看来不是我一个人不能打开了.498)this.w idth=498;' onmousewheel = 'javascript:return big(this)' border=0 alt="" src="h