C#中的SMTP配置Outlook.Com SMTP主机
如果你想以编程方式使用 Outlook.com或Gmail帐户作为 SMTP主机 发送电子邮件,也有为了得到这一切工作的几件事情要注意。
使用基本的System.Net.Mail
库,发送电子邮件一般是相当简单的。不过,如果你想用你的Outlook.Com或 Gmail帐户 作为SMTP主机发送,您将最有可能需要采取一些额外的步骤,如果你有两个阶段授权启用(和你有两个阶段启用身份验证吧??!!)。
SMTP配置举例Outlook.Com SMTP主机
下面是一个基本类 SMPT配置 为使用Outlook.Com的SMTP发送邮件:
基本邮件配置设置Outlook.Com SMTP:
using System; / / 你将需要添加一个引用到这个库: using System.Net.Mail; namespace SmtpMailConnections { public class OutlookDotComMail { string _sender = ""; string _password = ""; public OutlookDotComMail(string sender, string password) { _sender = sender; _password = password; } public void SendMail(string recipient, string subject, string message) { SmtpClient client = new SmtpClient("smtp-mail.outlook.com"); client.Port = 587; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(_sender, _password); client.EnableSsl = true; client.Credentials = credentials; try { var mail = new MailMessage(_sender.Trim(), recipient.Trim()); mail.Subject = subject; mail.Body = message; client.Send(mail); } catch (Exception ex) { Console.WriteLine(ex.Message); throw ex; } } } }
正如你所看到的,我们一直保持这个相当小的清楚的目的。我们初始化我们的简单类的用户名(在本例中,我们Outlook.Com电子邮件地址)和密码。
我们可以调用这个类来发送邮件这样的(这个例子是一个简单的控制台应用程序):
发送邮件使用邮件发件人
class Program { static void Main(string[] args) { string mailUser = "YourAccount@outlook.com"; string mailUserPwd = "YourPassword"; var sender = new OutlookDotComMail(mailUser, mailUserPwd); sender.SendMail("recipient@example.com", "Test Mail", "Hello!"); } }
如果你运行上面的代码中,使用自己的Outlook.Com电子邮件地址和密码,都应该可以正常工作。
除非 您已启用了两级授权您Outlook.Com帐户。如果你有,你需要创建一个应用程序特定的密码,或当您的凭据是由Outlook.Com SMTP服务器 拒绝上述代码将抛出一个异常。
要创建一个应用程序专用密码,登录到您的Outlook.com帐户,并进入帐户设置- >安全资讯- >应用程序密码:
单击创建一个新的应用程序密码的链接,瞧 – 你现在有一个新的密码为你的应用程序中使用:
以此作为在代码中的密码,就可以成功了:
使用而不是你的Outlook.Com帐户密码的应用程序密码:
class Program { static void Main(string[] args) { string mailUser = "YourAccount@outlook.com"; string mailUserPwd = "bnppnnenfmpiixty"; var sender = new OutlookDotComMail(mailUser, mailUserPwd); sender.SendMail("recipient@example.com", "Test Mail", "Hello!"); } }