思路
發送郵件一般得有一個發送的賬戶信息,我理解的就是個載體。其次發送內容,最后目標人群。
1.郵箱配置SMTP
登錄郵箱---設置---賬戶設置---開啟SMTP服務(記住授權碼) 至於更詳細的教程百度搜索
2.下面是發送的方法,這幾個參數啥意思
/// <summary> /// 同步發送郵件 /// </summary> /// <param name="host">主機--QQ郵箱默認smtp.qq.com</param> /// <param name="port">端口--QQ郵箱默認465</param> /// <param name="account">賬號 --郵箱地址發件人</param> /// <param name="password">密碼 --第一步獲取的授權碼</param> /// <param name="message">郵件模型</param> /// <returns></returns> public static Exception Send(string host, int port, string account, string password, MimeMessage message) { try { using (var client = new SmtpClient()) { client.Timeout = 5000; client.Connect(host, port, true); client.Authenticate(account, password); client.Send(message); client.Disconnect(true); } return null; } catch (Exception e) { return e; } }
MimeMessage 的配置
public async Task Emailadd (Guid? id, ERPMarketingEmail Email, List<ERPMarketingCustomer> customlist, AppSettings appSettingService, Guid UserID) { using (var scope = _serviceScopeFactory.CreateScope()) { var dbContext = scope.ServiceProvider.GetService<UnitemillManageDbContext>(); MimeMessage message = new MimeMessage();//實例化對象 message.From.Add(new MailboxAddress(Encoding.UTF8, appSettingService.DisplayName, appSettingService.From));//配置郵件的顯示名稱和發送賬戶 if (Email != null) { message.Subject = Email.Title;//郵件的標題 var bodyBuilder = new BodyBuilder(); bodyBuilder.HtmlBody = Email.Text; message.Body = bodyBuilder.ToMessageBody();//這是郵件的內容,通過BodyBuilder將text文本轉換成HTML的body,並且賦值給body } if (customlist.Count > 0) { foreach (var oneCustom in customlist) { message.Bcc.Clear(); message.To.Clear(); if (appSettingService.IsBCC)//這個位置是驗證接收客戶的郵箱是不是隱匿發送(不確定往to里加就行) { message.Bcc.Add(new MailboxAddress(oneCustom.Email));
}
else { message.To.Add(new MailboxAddress(oneCustom.Email));//message.to 可以繼續添加,我這里是考慮到服務器的壓力所以一個客戶發一次 } int r = new Random().Next(10, 45); System.Threading.Thread.Sleep(r * 1000); Email.CreateDate = DateTime.Now; Email.CreateUserId = UserID; var ex = SMTPHelper.Send(appSettingService.Host, appSettingService.Port, appSettingService.UserName, appSettingService.Password, message);
//調用上面的方法執行發送操作,發送完成記得數據庫加一行記錄啊如下 if (ex == null) { 成功,添加日志 } else { 失敗,添加日志 } } } } }