在阿里云上新购ECS默认都是禁用了25端口的,这个是阿里云出于反垃圾邮件所作的措施。如果系统中需要发送邮件,如果使用STMP默认的25端口,则会导致发送失败。
当然阿里云也提供了开启25端口的方式,可以登录控制台:安全管控 - 业务申请 - 25端口解封,提交申请经审核通过后,即可正常使用25端口来发送邮件。
除申请解封25端口外,也可以通过调整邮件发送代码,使用其它端口来发送。像smtp.163.com邮箱,除了默认的25端口外,也支持465端口发信。相应的示例代码如下:
MailMessage mmsg = new MailMessage();
mmsg.Subject = "邮件主题";
mmsg.BodyFormat = MailFormat.Html;
//邮件正文
mmsg.Body = "邮件正文";
//正文编码
mmsg.BodyEncoding = Encoding.UTF8;
//优先级
mmsg.Priority = MailPriority.Normal;
//发件者邮箱地址
mmsg.From = "xxxx@163.com";//发件人地址;
mmsg.To = "xxxx@163.com";//收件人地址}
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "xxxx@163.com");
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "xxxxxxx");
//端口
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", "465");
//是否ssl
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
//Smtp服务器
System.Web.Mail.SmtpMail.SmtpServer = "smtp.163.com";
try
{
SmtpMail.Send(mmsg);
MessageBox.Show("发送成功");
}
catch (Exception ex)
{
MessageBox.Show("发送失败,失败原因:" + ex.Message);
}
但这里使用的System.Web.Mail相关类,在.net 4.0下已提供过时,而使用System.Net.Mail实现却一直未能实现发送,先做个记录,实现后,再补充。