1、构造附件
static List<Attachment> BuildAttachments(List<EmailFile> files) { if (files == null || files.Count <= 0) { return null; } List<Attachment> result = new List<Attachment>(); foreach (var obj in files) { try { byte[] buffer = Convert.FromBase64String(obj.Body); System.IO.MemoryStream stream = new System.IO.MemoryStream(buffer, 0, buffer.Length); result.Add(new Attachment(stream, obj.Filename, obj.Mimetype)); } catch { } } return result; }
2、构造邮件实例,并发送
static void SendMail(string from, string tos, string ccs, string subject, string body, List<Attachment> attachments) { try { string[] fromMails = from.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); string[] toMails = tos.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); string[] ccMails = ccs.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); MailMessage m = new MailMessage(); m.From = new MailAddress(fromMails[0].Trim()); foreach (string to in toMails) { m.To.Add(to.Trim()); } foreach (string cc in ccMails) { m.CC.Add(cc.Trim()); } m.Subject = subject; m.Body = body; m.BodyEncoding = System.Text.UnicodeEncoding.UTF8; m.IsBodyHtml = true; if (attachments != null && attachments.Count > 0) { foreach (var obj in attachments) { m.Attachments.Add(obj); } } SmtpClient client = new SmtpClient(); client.Host = _configObj.EmailHost; client.UseDefaultCredentials = true; if (string.IsNullOrEmpty(_configObj.EmailUser) == false && string.IsNullOrEmpty(_configObj.EmailPwd) == false) { client.Credentials = new System.Net.NetworkCredential(_configObj.EmailUser.Trim(), _configObj.EmailPwd.Trim()); } client.Send(m); } catch (Exception ex) { throw ex; } }