diff --git a/Bremen_ESG.csproj b/Bremen_ESG.csproj index f37e981..f87c494 100644 --- a/Bremen_ESG.csproj +++ b/Bremen_ESG.csproj @@ -1,7 +1,7 @@ - net6.0 + net8.0 enable enable diff --git a/Controllers/ApiController.cs b/Controllers/ApiController.cs index 1b3cfd1..71d1baa 100644 --- a/Controllers/ApiController.cs +++ b/Controllers/ApiController.cs @@ -38,6 +38,11 @@ using static System.Net.WebRequestMethods; using MimeKit; using MailKit.Net.Smtp; using MailKit.Security; +using System.Net.Mail; +using System.Net.Mime; +using NPOI.SS.UserModel; +using NPOI.XWPF.UserModel; +using System.Reflection; namespace Bremen_ESG.Controllers @@ -164,6 +169,206 @@ namespace Bremen_ESG.Controllers return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); } + + [Route("esg_mail")] + public async Task Esg_Mail(IFormCollection obj) { + result ret = new result(); + + string target_email = obj["email"].ToString(); + string target_link = obj["link"].ToString(); + + string err_msg = ""; + + if (GlobalClass.isURL(target_link) == false) + { + err_msg += "無有效結果連結\n"; + } + + if (GlobalClass.isEmail(target_email) == false) + { + err_msg += "無有效Email\n"; + } + + if (err_msg != "") + { + ret.ret = "no"; + ret.message = err_msg; + ret.err_code = "0001"; + + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + string html = $@""; + + string fullPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/email_pic/email_footer.jpg"); + var res = new LinkedResource(fullPath, MediaTypeNames.Image.Jpeg); + res.ContentId = Guid.NewGuid().ToString(); + + html += ""; + html += ""; + html += ""; + html += ""; + html += " ESG "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += ""; + html += ""; + html += ""; + html += "
"; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += "
"; + html += " "; + html += "
"; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += "
"; + html += " "; + html += "
"; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += "
"; + html += "
您好,謝謝您填寫ESG快速檢測
詳細的測驗結果分析,請點擊以下連結查看:
"; + html += "
"; + html += " "; + html += " "; + html += " "; + html += " "; + html += "
"; + html += " 查看結果 "; + html += "
"; + html += "
"; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += "
"; + html += " "; + html += " "; + html += " "; + html += "
"; + html += "
"; + html += "
"; + html += " "; + html += "
"; + html += "
"; + html += " "; + html += "
"; + html += "
"; + html += ""; + html += ""; + html += ""; + + //建立AlternativeView + var altView = AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html); + //將圖檔資源加入AlternativeView + altView.LinkedResources.Add(res); + + await SendEsgResultMailAsync(altView, target_email); + + ret.ret = "yes"; + + ret.message = "已寄送結果通知信至" + target_email; + + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + public class newResult { public string ret = "no"; @@ -181,6 +386,40 @@ namespace Bremen_ESG.Controllers } + public async Task SendEsgResultMailAsync(AlternateView altView, string toEmail) { + System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); + client.Host = GlobalClass.appsettings("MailServer:smtp_host"); + client.Port = int.Parse(GlobalClass.appsettings("MailServer:smtp_port")); + client.EnableSsl = true; + client.Credentials = new NetworkCredential( + GlobalClass.appsettings("MailServer:smtp_username"), + GlobalClass.appsettings("MailServer:smtp_password") + ); + + var mail = new MailMessage(); + mail.IsBodyHtml = true; + + mail.AlternateViews.Add(altView); + mail.To.Add(toEmail); + mail.Bcc.Add("dk96pccu@gmail.com"); + mail.From = new MailAddress(GlobalClass.appsettings("MailServer:smtp_username"), "ESG快速檢測結果分析", System.Text.Encoding.UTF8); + mail.Subject = "ESG快速檢測結果分析"; + await client.SendMailAsync(mail).ContinueWith(task => + { + if (task.IsFaulted) + { + Console.WriteLine("Error sending email: " + task.Exception); + } + else + { + Console.WriteLine("Email sent successfully."); + } + }); + + client.Dispose(); + } + + /// public async Task SendEmailAsync(MailRequest mailRequest) { var email = new MimeMessage(); @@ -203,7 +442,7 @@ namespace Bremen_ESG.Controllers builder.HtmlBody = mailRequest.Body; email.Body = builder.ToMessageBody(); - using var smtp = new SmtpClient(); + using var smtp = new MailKit.Net.Smtp.SmtpClient(); smtp.Connect(GlobalClass.appsettings("MailServer:smtp_host"), int.Parse(GlobalClass.appsettings("MailServer:smtp_port")), SecureSocketOptions.StartTls); smtp.Authenticate(GlobalClass.appsettings("MailServer:smtp_username"), GlobalClass.appsettings("MailServer:smtp_password")); await smtp.SendAsync(email); diff --git a/appsettings.json b/appsettings.json index 0e4b0ec..8d7eba8 100644 --- a/appsettings.json +++ b/appsettings.json @@ -17,7 +17,7 @@ "smtp_host": "smtp.gmail.com", "smtp_port": 587, "smtp_username": "bremen@bremen.com.tw", - "smtp_password": "2776Bremen5485", + "smtp_password": "sbkm kcwm opzu zaon", "sender_email": "bremen@bremen.com.tw", "sender_name": "ESG需求聯絡表通知信" }, diff --git a/wwwroot/email_pic/email_footer.jpg b/wwwroot/email_pic/email_footer.jpg new file mode 100644 index 0000000..6a33047 Binary files /dev/null and b/wwwroot/email_pic/email_footer.jpg differ