Explicit SSL发送邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
public void SendMail(string FromMial, string ToMial, string AuthorizationCode, string ReplyTo, string CCMial, string File_Path) { try { MailMessage mailMessage = new MailMessage(); mailMessage.Priority = MailPriority.Normal; mailMessage.From = new MailAddress(FromMial); List<string> ToMiallist = ToMial.Split(';').ToList(); for (int i = 0; i < ToMiallist.Count; i++) { mailMessage.To.Add(new MailAddress(ToMiallist[i])); } if (ReplyTo == "" || ReplyTo == null) { ReplyTo = FromMial; } mailMessage.ReplyTo = new MailAddress(ReplyTo); if (CCMial != "" && CCMial != null) { List<string> CCMiallist = ToMial.Split(';').ToList(); for (int i = 0; i < CCMiallist.Count; i++) { mailMessage.CC.Add(new MailAddress(CCMial)); } } mailMessage.SubjectEncoding = Encoding.GetEncoding(936); mailMessage.IsBodyHtml = false; mailMessage.Subject = "发送邮件测试"; mailMessage.Body = "测试群发邮件,以及附件邮件!....."; if (File_Path != "" && File_Path != null) { mailMessage.Attachments.Add(new Attachment(File_Path)); mailMessage.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess; } SmtpClient client = new SmtpClient(); #region 设置邮件服务器地址 if (FromMial.Length != 0) { string[] addressor = FromMial.Trim().Split(new Char[] { '@', '.' }); switch (addressor[1]) { case "163": client.Host = "smtp.163.com"; break; case "126": client.Host = "smtp.126.com"; break; case "qq": client.Host = "smtp.qq.com"; break; case "gmail": client.Host = "smtp.gmail.com"; break; case "hotmail": client.Host = "smtp.live.com"; break; case "foxmail": client.Host = "smtp.foxmail.com"; break; case "sina": client.Host = "smtp.sina.com.cn"; break; default: client.Host = "smtp.exmail.qq.com"; break; } } #endregion client.EnableSsl = true; client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential(FromMial, AuthorizationCode); mailMessage.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; client.Send(mailMessage); Console.WriteLine("发送成功"); } catch (Exception) { Console.WriteLine("发送失败"); } }
|
Implicit SSL发送邮件
查阅资料得知,.net 的自带组件System.Net.Mail发送邮件支持Explicit SSL但是不支持Implicit SSL,国内大部门邮件服务器都是Implicit SSL,所以无法通过465端口发邮件
有人说了,那干嘛要用呢,我用25不好好的么,为什么不用25呢?
这个问题问得好,很多云服务器像阿里、腾讯购买的新机都是把25端口封禁的,想要用25端口需要手动申请解封,据阿里工作客服所说,审核通过率感人
那么今天就记录一下如何使用465端口成功发邮件
可以使用CDO.Message发送邮件
如何引用CDO.Message? cod.message的引用位置: C:\Windows\System32\cdosys.dll
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
public void SendMailForSSL(string FromMial, string ToMial, string AuthorizationCode, string ReplyTo, string CCMial, string File_Path, string Subject = "", string Body = "") { CDO.Message objMail = new CDO.Message(); try { objMail.To = ToMial; objMail.From = FromMial; objMail.Subject = Subject; objMail.HTMLBody = Body; objMail.AddAttachment(File_Path, FromMial, AuthorizationCode); objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"].Value = 465; objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"].Value = "smtp.qq.com"; objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendemailaddress"].Value = FromMial; objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpuserreplyemailaddress"].Value = FromMial; objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpaccountname"].Value = FromMial; objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"].Value = FromMial; objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"].Value = AuthorizationCode; objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"].Value = 2; objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"].Value = 1; objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpusessl"].Value = "true"; objMail.Configuration.Fields.Update(); objMail.Send(); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowBusinessException(ex); } } }
|