公司新闻

Welfare

阿里云虚拟主机不能发送邮件解决方法(.Net代码)

发表人:六艺科技
发表时间:4/29/2020 10:33:25 AM

阿里云主机smtp邮件端口25默认是关闭的,后台通过工单申请开通的概率不大,可以使用ssl连接发送邮件。

遇到阿里云虚拟主机不能发送邮件的情况,同样的代码在两个虚拟主机的表现完全不同,其中一台使用smtp发送电子邮件失败,说明阿里云虚拟主机的系统配置也有区别,经测试发现不能发送邮件的虚拟主机不能正常使用 System.Net.Mail 命名空间,换成 System.Web.Mail命名空间后可以使用465端口发送邮件。

一般情况.net开发者可以使用 System.Net.Mail 来发送邮件,类似如下代码:


MailMessage message = new MailMessage();
//设置发件人,发件人需要与设置的邮件发送服务器的邮箱一致
 MailAddress fromAddr = new MailAddress("qwe123@qq.com");
message.From = fromAddr;
//设置收件人,可添加多个,添加方法与下面的一样
message.To.Add(reciver);
//设置抄送人
message.CC.Add("qwe123@163.com");
//设置邮件标题
message.Subject = "Test";
//设置邮件内容
message.Body = content;
//设置邮件发送服务器,服务器根据你使用的邮箱而不同,可以到相应的 邮箱管理后台查看,下面是QQ的
SmtpClient client = new SmtpClient("smtp.qq.com", 25);
//设置发送人的邮箱账号和密码
client.Credentials = new NetworkCredential(emailAcount,emailPassword);
//启用ssl,也就是安全发送
client.EnableSsl = true;
//发送邮件
client.Send(message);

如果上面的代码发送失败,那就换成老版本的 System.Web.Mail命名空间发送邮件,类似如下代码:

System.Web.Mail.MailMessage mmsg = new System.Web.Mail.MailMessage();
//邮件主题
mmsg.Subject = Subject;
mmsg.BodyFormat = MailFormat.Html;
//邮件正文
mmsg.Body = Body;
//正文编码
mmsg.BodyEncoding = Encoding.UTF8;
//优先级
mmsg.Priority = System.Web.Mail.MailPriority.Normal;
//发件者邮箱地址
mmsg.From = SmtpUID;
//收件人收箱地址
mmsg.To = ReceiveEmail;
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");//用户名
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", SmtpUID);//密码
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", SmtpPWD);//端口
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", port);//是否ssl
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", ssl ? "true" : "false");//Smtp服务器
System.Web.Mail.SmtpMail.SmtpServer = SmtpServer;
SmtpMail.Send(mmsg);


支持 0
浏览:345
反对 0