• 在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",接下来的配置就和上面一样了。

  • 相关阅读:
    bzoj 1022: [SHOI2008]小约翰的游戏John anti_nim游戏
    spoj gss2 : Can you answer these queries II 离线&&线段树
    hduoj 1077 Catching Fish 求单位圆最多覆盖点个数
    HDUOJ Clear All of Them I 状压DP
    bzoj 1013: [JSOI2008]球形空间产生器sphere 高斯消元
    bzoj 1006: [HNOI2008]神奇的国度 弦图的染色问题&&弦图的完美消除序列
    Cocos2d-x Lua中生命周期函数
    Cocos2d-x Lua中使用标签
    Cocos2d-x Lua中Sprite精灵类
    Cocos2d-x Lua Node与Node层级架构
  • 原文地址:https://www.cnblogs.com/artech/p/747870.html
Copyright © 2020-2023  润新知