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 邮箱服务网址 端口  回车

 

posted @ 2017-06-13 11:34  林子……  阅读(152)  评论(0)    收藏  举报