之前项目需要,做了一个发送邮箱的需求,做一下记录:
开始的时候写了一个使用25端口发送邮件的方法,在本地测试了没有问题,发布到阿里云服务器上就不行了,原来是阿里云禁用了25端口,只能换用465端口来发送邮件,两种方法都写在下面了
1、首先是使用25端口的方法,此方法要引用 System.Net.Mail
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="mailHost">邮件服务器</param>
/// <param name="mailPort">端口</param>
/// <param name="mailName">发送邮件的用户名</param>
/// <param name="mailPassword">发送邮件的密码</param>
/// <param name="tomail">收件人邮箱地址</param>
/// <param name="file">附件地址</param>
/// <param name="subject">邮件主题</param>
/// <param name="body">内容</param>
public static void Sendmail(string mailHost,int mailPort,string mailName,string mailPassword,string tomail,List<string> file=null,string subject="",string body="")
{
var smtpClient = new SmtpClient();
var mailMessage = new MailMessage();
smtpClient.EnableSsl = true;
smtpClient.Host = mailHost;
smtpClient.Port = mailPort;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new System.Net.NetworkCredential(mailName, mailPassword);
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
mailMessage.BodyEncoding = Encoding.UTF8;
mailMessage.IsBodyHtml = true;
mailMessage.Priority = MailPriority.High;
mailMessage.From = new MailAddress(mailName);
mailMessage.To.Add(tomail);
mailMessage.Subject = subject;
mailMessage.Attachments.Clear();
//添加邮件附件,可发送多个文件
if (file != null && file.Count() > 0)
{
foreach (var filename in file)
{
mailMessage.Attachments.Add(new Attachment(filename, MediaTypeNames.Application.Octet));
}
}
mailMessage.Body = body;
try
{
smtpClient.Send(mailMessage);
}
catch (SmtpException ex)
{
throw new Exception("邮箱异常!" + ex.Message);
}
}
2、其次是使用465端口发送邮件,此方法需要引用 System.Web.Mail (此类一些方法已经过时,但是不影响使用)
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="mailHost">邮件服务器</param>
/// <param name="mailPort">端口</param>
/// <param name="mailName">发送邮件的用户名</param>
/// <param name="mailPassword">发送邮件的密码</param>
/// <param name="tomail">收件人邮箱地址</param>
/// <param name="file">附件地址</param>
/// <param name="subject">邮件主题</param>
/// <param name="body">内容</param>
public static void Sendmail(string mailHost,int mailPort,string mailName,string mailPassword,string tomail,List<string> file=null,string subject="",string body="")
{
try
{
System.Web.Mail.MailMessage mmsg = new System.Web.Mail.MailMessage();
//验证
mmsg.Subject = subject;// "zhuti1";//邮件主题
mmsg.BodyFormat = System.Web.Mail.MailFormat.Html;
mmsg.Body = body;// "wqerwerwerwer";//邮件正文
mmsg.BodyEncoding = Encoding.UTF8;//正文编码
mmsg.Priority = System.Web.Mail.MailPriority.High;//优先级
//添加邮件附件,可发送多个文件
if (file != null && file.Count() > 0)
{
foreach (var filename in file)
{
System.Web.Mail.MailAttachment mailAttach_1 = new System.Web.Mail.MailAttachment(filename);
mmsg.Attachments.Add(mailAttach_1);
}
}
mmsg.From = mailName;//发件者邮箱地址
mmsg.To = tomail;//收件人收箱地址
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
//登陆名
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", mailName);
//登陆密码
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", mailPassword);
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 465);//端口
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
System.Web.Mail.SmtpMail.SmtpServer = mailHost;
System.Web.Mail.SmtpMail.Send(mmsg);
}
catch (Exception ex)
{
throw new Exception("邮箱异常!" + ex.Message);
}
}