邮箱操作类

后端发送邮件,用的是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); 

 

posted @ 2023-01-30 13:45  StarsOverTheSea  阅读(36)  评论(0)    收藏  举报