C# 关于发邮件的
本来项目中用到邮件的发送,本来很简单的,system.net.mail该设置的设置好就能发邮件了。可惜领导提供的服务器是阿里云的,阿里云把发邮件的默认端口封掉了
25端口发不出去邮件,反正会报错,后来反馈要用465的加密端口,尝试了很多次,system.net.mail是不行的。网上有人说465端口要用旧版本的system.web.mail,没办法各种搜索,各种尝试。
写博客,说明问题最后还是解决了的,用的system.web.mail.感觉除了设置起来比较麻烦,其它都差不多的。下面贴代码:
system.web.mail 465端口 加密发送邮件 备注(如果是一般账号,要用授权码;企业账号用登录密码)
/// <summary> /// 邮件发送 /// </summary> /// <param name="toAddress">收件人地址</param> /// <param name="toCC">抄送人地址</param> /// <param name="subject">主题</param> /// <param name="file">文件地址</param> /// <returns></returns> private ResponseBase SendMailTo(string toAddress, string toCC, string subject, string file) { ResponseBase r = new ResponseBase(); MailMessage mail = new MailMessage(); mail.To = toAddress; mail.From = MailUserName; mail.Subject = subject; mail.Body = "report details"; mail.BodyFormat = System.Web.Mail.MailFormat.Html; mail.Cc = toCC; if (!string.IsNullOrEmpty(file)) { mail.Attachments.Add(new MailAttachment(file,MailEncoding.Base64)); } mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", mail.From); mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", MailPassword); mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 465); mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true"); SmtpMail.SmtpServer = MailHost; try { SmtpMail.Send(mail); r.state = "0"; r.msg = "邮件发送成功!"; } catch (Exception e) { r.state = "-1"; r.msg = e.ToString(); } return r; }
各种参数,写上正确的值就可以了,我是调通了才贴代码的。
对了,最后还要说一下,确保你提供的邮箱服务器是开通465端口的,如果没开那就没有办法了。
附带如何确定邮箱服务器端口是否是通的,cmd 打开黑框框,telnet 邮箱服务网址 端口 回车

浙公网安备 33010602011771号