在项目开发中,发送邮件时一种非常常见的功能。一般的情况下,大型的公司都有自己的邮件系统,我们可以直接通过公司的Pop/SMTP Server进行邮件的发送和接收。不过,对于一些小公司不具有这样的条件,他们一般通过一些公共的邮件服务通过商提供的邮件服务。比如Sina,163就是很好的、常用的邮件服务。不过相比之下,我还是习惯使用Google Gmail。
接下来,我将介绍两方面来介绍今天的内容,如果通过Managed code通过Gmail进行邮件的发送,以及如何在Outlook中配置Gmail。今天介绍的东西和技术不是很沾边。只是觉得具有一定的实用性,同时介绍一下我在使用过程遇到的一些问题,希望给大家在使用过程中提供一些参考。
我们知道,SMTP是我们最常用的邮件传输的协议。通过SMTP方式,我们只需要配置相应的STMP Server和Port,使用我们的帐号和密码登录到STMP Server,理论上我们就可以进行邮件的发送了。对于Google Gmail,对应的信息如下:
你通过你注册的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 = "[email protected]";
12: const string ADDRESS_TO = "[email protected]";
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: <?xml version="1.0" encoding="utf-8" ?>
2: <configuration>
3: <system.net>
4: <mailSettings>
5: <smtp from="[email protected]">
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作为专业的邮件管理的办公软件,为我们进行邮件的接收和发送、以及邮件的管理提供了极大的便利。下面我来简单介绍一下如何通过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",接下来的配置就和上面一样了。