邮箱操作类
后端发送邮件,用的是sendMail--发送邮件(要求登陆),注意要提前确定发邮件的邮箱账号及密码,以及使用什么协议,和协议地址
比如用的是POP3/SMTP协议,有些人设定的协议地址 smtp.exmail.qq.com
MailHelper.cs
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Net; 5 using System.Net.Mail; 6 using System.Text; 7 using System.Text.RegularExpressions; 8 using System.Threading.Tasks; 9 10 namespace SH3H.NC.Common.MailHelper 11 { 12 /// <summary> 13 /// 邮件操作类 14 /// </summary> 15 public class MailHelper 16 { 17 public const string Bcc = "bcc"; 18 19 public const string Cc = "cc"; 20 21 public const string Date = "date"; 22 23 public const string From = "from"; 24 25 public const string Importance = "importance"; 26 27 public const string InReplyTo = "in-reply-to"; 28 29 public const string MessageId = "message-id"; 30 31 public const string Received = "received"; 32 33 public const string ReplyTo = "reply-to"; 34 35 public const string Subject = "subject"; 36 37 public const string To = "to"; 38 /// <summary> 39 /// 获取Email登陆地址 40 /// </summary> 41 /// <param name="email">email地址</param> 42 /// <returns></returns> 43 public static string GetEMailLoginUrl(string email) 44 { 45 if ((email == string.Empty) || (email.IndexOf("@") <= 0)) 46 { 47 return string.Empty; 48 } 49 int index = email.IndexOf("@"); 50 email = "http://mail." + email.Substring(index + 1); 51 return email; 52 } 53 /// <summary> 54 /// 发送邮件 55 /// </summary> 56 /// <param name="mailSubjct">邮件主题</param> 57 /// <param name="mailBody">邮件正文</param> 58 /// <param name="mailFrom">发送者</param> 59 /// <param name="mailAddress">邮件地址列表</param> 60 /// <param name="HostIP">主机IP</param> 61 /// <returns></returns> 62 public static string sendMail(string mailSubjct, string mailBody, string mailFrom, List<string> mailAddress, string HostIP) 63 { 64 string str = ""; 65 try 66 { 67 MailMessage message = new MailMessage 68 { 69 IsBodyHtml = false, 70 Subject = mailSubjct, 71 Body = mailBody, 72 From = new MailAddress(mailFrom) 73 }; 74 for (int i = 0; i < mailAddress.Count; i++) 75 { 76 message.To.Add(mailAddress[i]); 77 } 78 new SmtpClient { UseDefaultCredentials = false, DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis, Host = HostIP, Port = (char)0x19 }.Send(message); 79 } 80 catch (Exception exception) 81 { 82 str = exception.Message; 83 } 84 return str; 85 } 86 /// <summary> 87 /// 发送邮件(要求登陆) 88 /// </summary> 89 /// <param name="mailSubjct">邮件主题</param> 90 /// <param name="mailBody">邮件正文</param> 91 /// <param name="mailFrom">发送者</param> 92 /// <param name="mailAddress">接收地址列表</param> 93 /// <param name="HostIP">主机IP</param> 94 /// <param name="username">用户名</param> 95 /// <param name="password">密码</param> 96 /// <returns></returns> 97 public static bool sendMail(string mailSubjct, string mailBody, string mailFrom, List<string> mailAddress, string HostIP, string username, string password,out string msg) 98 { 99 bool flag; 100 msg = sendMail(mailSubjct, mailBody, mailFrom, mailAddress, HostIP, 587, username, password, true, string.Empty, out flag); 101 return flag; 102 } 103 /// <summary> 104 /// 发送邮件 105 /// </summary> 106 /// <param name="mailSubjct">邮件主题</param> 107 /// <param name="mailBody">邮件正文</param> 108 /// <param name="mailFrom">发送者</param> 109 /// <param name="mailAddress">接收地址列表</param> 110 /// <param name="HostIP">主机IP</param> 111 /// <param name="filename">附件名</param> 112 /// <param name="username">用户名</param> 113 /// <param name="password">密码</param> 114 /// <param name="ssl">加密类型</param> 115 /// <returns></returns> 116 public static string sendMail(string mailSubjct, string mailBody, string mailFrom, List<string> mailAddress, string HostIP, string filename, string username, string password, bool ssl) 117 { 118 string str = ""; 119 try 120 { 121 MailMessage message = new MailMessage 122 { 123 IsBodyHtml = false, 124 Subject = mailSubjct, 125 Body = mailBody, 126 127 From = new MailAddress(mailFrom) 128 }; 129 for (int i = 0; i < mailAddress.Count; i++) 130 { 131 message.To.Add(mailAddress[i]); 132 } 133 if (System.IO.File.Exists(filename)) 134 { 135 message.Attachments.Add(new Attachment(filename)); 136 } 137 SmtpClient client = new SmtpClient 138 { 139 EnableSsl = ssl, 140 UseDefaultCredentials = false 141 }; 142 NetworkCredential credential = new NetworkCredential(username, password); 143 client.Credentials = credential; 144 client.DeliveryMethod = SmtpDeliveryMethod.Network; 145 client.Host = HostIP; 146 client.Port = 0x19; 147 client.Send(message); 148 } 149 catch (Exception exception) 150 { 151 str = exception.Message; 152 } 153 return str; 154 } 155 /// <summary> 156 /// 发送邮件 157 /// </summary> 158 /// <param name="mailSubjct"></param> 159 /// <param name="mailBody"></param> 160 /// <param name="mailFrom"></param> 161 /// <param name="mailAddress"></param> 162 /// <param name="HostIP"></param> 163 /// <param name="port"></param> 164 /// <param name="username"></param> 165 /// <param name="password"></param> 166 /// <param name="ssl"></param> 167 /// <param name="replyTo"></param> 168 /// <param name="sendOK"></param> 169 /// <returns></returns> 170 public static string sendMail(string mailSubjct, string mailBody, string mailFrom, List<string> mailAddress, string HostIP, int port, string username, string password, bool ssl, string replyTo, out bool sendOK) 171 { 172 sendOK = true; 173 string str = ""; 174 try 175 { 176 MailMessage message = new MailMessage 177 { 178 IsBodyHtml = false, 179 Subject = mailSubjct, 180 Body = mailBody, 181 From = new MailAddress(mailFrom) 182 }; 183 if (replyTo != string.Empty) 184 { 185 MailAddress address = new MailAddress(replyTo); 186 message.ReplyTo = address; 187 } 188 Regex regex = new Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"); 189 for (int i = 0; i < mailAddress.Count; i++) 190 { 191 if (regex.IsMatch(mailAddress[i])) 192 { 193 message.To.Add(mailAddress[i]); 194 } 195 } 196 if (message.To.Count == 0) 197 { 198 return string.Empty; 199 } 200 SmtpClient client = new SmtpClient 201 { 202 EnableSsl = ssl, 203 UseDefaultCredentials = false 204 }; 205 NetworkCredential credential = new NetworkCredential(username, password); 206 client.Credentials = credential; 207 client.DeliveryMethod = SmtpDeliveryMethod.Network; 208 client.Host = HostIP; 209 client.Port = port; 210 client.Send(message); 211 } 212 catch (Exception exception) 213 { 214 str = exception.Message; 215 sendOK = false; 216 } 217 return str; 218 } 219 } 220 }
调用
1 var flag = MailHelper.sendMail(subject, mail.Content, AppSetting.MAIL_ACCOUNT, new List<string>() { mail.Receiver }, AppSetting.HOST_IP, AppSetting.MAIL_ACCOUNT, AppSetting.MAIL_PWD, out msg);

我佛真的不渡哈批

浙公网安备 33010602011771号