ibms-dome/Backend/Services/Implement/SendEmailService.cs

82 lines
3.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Microsoft.Extensions.Options;
using Backend.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Threading.Tasks;
using BackendWorkerService.Services.Interface;
using Microsoft.Extensions.Logging;
namespace BackendWorkerService.Services.Implement
{
public class SendEmailService : ISendEmailService
{
private readonly ILogger<SendEmailService> logger;
private readonly IOptions<SMTPConfig> _options;
private SMTPConfig smtp;
public SendEmailService(ILogger<SendEmailService> logger, IOptions<SMTPConfig> options)
{
this.logger = logger;
smtp = options.Value;
}
public bool Send(int id, List<string> recipientEmails, string subject, string content)
{
try
{
logger.LogInformation("【SendEmailSMSService】【Email開始寄送】[任務編號]{0}", id);
MailMessage MyMail = new MailMessage();
MyMail.SubjectEncoding = System.Text.Encoding.UTF8;//郵件標題編碼
MyMail.BodyEncoding = System.Text.Encoding.UTF8; //郵件內容編碼
MyMail.IsBodyHtml = true; //是否使用html格式
var mailFrom = $"FIC IBMS管理系統通知 <{smtp.UserName}>";
MyMail.From = new System.Net.Mail.MailAddress(mailFrom); //寄件人
foreach (var email in recipientEmails)
{
MyMail.To.Add(email); //設定收件者Email
}
MyMail.Subject = subject; //主題
MyMail.Body = content; //設定信件內容
//讀取 SMTP Config
SmtpClient MySMTP = new SmtpClient(smtp.Host, smtp.Port);
MySMTP.EnableSsl = smtp.EnableSsl;
MySMTP.Credentials = new System.Net.NetworkCredential(smtp.UserName, smtp.Password);
try
{
MySMTP.Send(MyMail);
MySMTP.Dispose();
MyMail.Dispose(); //釋放資源
logger.LogInformation("【SendEmailSMSService】【Email寄送成功】[任務編號]{0}", id);
return true;
}
catch(Exception exception)
{
logger.LogError("【SendEmailSMSService】【Email寄送失敗】[任務編號]{0}", id);
logger.LogError("【SendEmailSMSService】【Email寄送失敗】[Exception]{0}", exception.ToString());
return false;
}
}
catch (Exception exception)
{
logger.LogError("【SendEmailSMSService】【Email寄送失敗】[任務編號]{0}", id);
logger.LogError("【SendEmailSMSService】【Email寄送失敗】[Exception]{0}", exception.ToString());
throw;
//return false;
}
}
}
}