0x01 C#中通常发送邮件的方法
在C#/ASP.NET中,发送邮件经常用的就是SmtpClient类和MailMessage类,该类能够通过其方法轻松的对目标SMTP服务器发送relay请求,从而使得我们的邮件能够发送给对方。这个功能尤其在ASP.NET网站开发的时候经常会用到。比如,我们需要为网站实现发送验证邮件的功能的时候,需要用到发送邮件的功能。
下面将介绍这两个类,其中SmtpClient类用于发送邮件,MailMessage类用于设置邮件的内容。
0x02 MailMessage类的使用方法
构造MailMessage对象MailMessage mailMessage = new MailMessage(mailFrom, mailTo);
其中,mailFrom为自己的邮箱地址,mailTo为收件人的邮箱地址。
设置属性mailMessage.Subject = mailSubject;//设置邮件主题
mailMessage.Body = content;//设置邮件内容
mailMessage.BodyEncoding = Encoding.UTF8;//正文编码格式(一般用UTF8从而防止中文乱码)
mailMessage.IsBodyHtml = true;//设置为HTML格式(为true可以发送HTML格式的邮件,可以显示的更加美观)
mailMessage.Priority = MailPriority.Low;//优先级
0x03 SmtpClient类的用法
构造SmtpClient类SmtpClient smtpClient = new SmtpClient();
设置SmtpClient属性smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; //指定电子邮件发送方式
smtpClient.Host = smtpServer; //指定SMTP服务器
smtpClient.Credentials = new System.Net.NetworkCredential(username, userPassword); //指定登录用户名和密码
发送邮件smtpClient.Send(mailMessage);
0x04 封装一个发送邮件类
using System.Linq;
using System;
using System.Net.Mail;
using System.Text;
///
///SendMail 的摘要说明
///
public class SendMail
{
public static bool SendEmail(string mailTo, string mailSubject, string content)
{
// 设置发送方的邮件信息
string smtpServer = "smtp.xxx.com"; //SMTP服务器
string mailFrom = "xxx@xxx.com"; //邮箱名
string username = "xxx"; //登陆用户名
string userPassword = "xxxxxx";//登陆密码
// 邮件服务设置
SmtpClient smtpClient = new SmtpClient();
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式
smtpClient.Host = smtpServer; //指定SMTP服务器
smtpClient.Credentials = new System.Net.NetworkCredential(username, userPassword);//用户名和密码
// 发送邮件设置
MailMessage mailMessage = new MailMessage(mailFrom, mailTo); // 发送人和收件人
mailMessage.Subject = mailSubject;//主题
mailMessage.Body = content;//内容
mailMessage.BodyEncoding = Encoding.UTF8;//正文编码
mailMessage.IsBodyHtml = true;//设置为HTML格式
mailMessage.Priority = MailPriority.Low;//优先级
try
{
smtpClient.Send(mailMessage); // 发送邮件
return true;
}
catch (SmtpException ex)
{
return false;
}
}
}
创建好上述类之后就可以通过以下方法调用函数了。SendMail.SendEmail("xxx@xxx.com","sub","content");