[英]Can I Send Emails to Multiple Receivers using IEmailSender Interface in ASP.Net Core 3.0
我是 ASP.Net 核心的初學者。 實際上我使用的是 ASP.Net Core 3.0。 我想向多個接收者發送電子郵件。 我可以使用 IEmailSender 接口嗎? 或者有什么建議?
我的 IEmailSender 實現就像,
public class EmailSender : IEmailSender
{
private string host;
private int port;
private bool enableSSL;
private string userName;
private string password;
public EmailSender(string host, int port, bool enableSSL, string userName, string password)
{
this.host = host;
this.port = port;
this.enableSSL = enableSSL;
this.userName = userName;
this.password = password;
}
public Task SendEmailAsync(string email, string subject, string htmlMessage)
{
var client = new SmtpClient(host, port)
{
Credentials = new NetworkCredential(userName, password),
EnableSsl = enableSSL
};
return client.SendMailAsync(
new MailMessage(userName, email, subject, htmlMessage) { IsBodyHtml = true }
);
}
}
誰能幫我?
MailMessage.To
屬性的類型為MailAddressCollection 。 這意味着,您可以使用Add
方法添加多個收件人。
MailMessage message = new MailMessage();
message.To.Add(new MailAddress("email1@evilcorp.com"));
message.To.Add(new MailAddress("email2@evilcorp.com"));
其實我是用另一種方式來做的。 生病張貼在這里,它會幫助某人..
我創建了一個名為“IExtendedEmailSender”的新界面,繼承了“IEmailSender”界面。
public interface IExtendedEmailSender : IEmailSender { }
創建新的抽象方法來向多個接收者發送電子郵件。
public interface IExtendedEmailSender : IEmailSender { Task SendBulkEmailAsync(string[] emails, string subject, string htmlMessage); }
創建用於檢查郵件地址的新方法。
public static bool CheckIsValiedEmailAddress(string address) { try { var addr = new System.Net.Mail.MailAddress(address); return addr.Address == address; } catch { return false; } }
創建調用“EmailSender”的新類並實現“IExtendedEmailSender”接口。
public class EmailSender : IExtendedEmailSender { private string host; private int port; private bool enableSSL; private string userName; private string password; public EmailSender(string host, int port, bool enableSSL, string userName, string password) { this.host = host; this.port = port; this.enableSSL = enableSSL; this.userName = userName; this.password = password; } public Task SendEmailAsync(string email, string subject, string htmlMessage) { var client = new SmtpClient(host, port) { Credentials = new NetworkCredential(userName, password), EnableSsl = enableSSL }; return client.SendMailAsync( new MailMessage(userName, email, subject, htmlMessage) { IsBodyHtml = true } ); } public Task SendBulkEmailAsync(string[] emails, string subject, string htmlMessage) { var client = new SmtpClient(host, port) { Credentials = new NetworkCredential(userName, password), EnableSsl = enableSSL }; MailMessage mailMessage = new MailMessage(); mailMessage.Body = htmlMessage; mailMessage.IsBodyHtml = true; mailMessage.Subject = subject; foreach (string emailAdress in emails) { if (CheckIsValiedEmailAddress(emailAdress)) mailMessage.To.Add(emailAdress); } return client.SendMailAsync(mailMessage); ; } }
最后,'IEmailSender' 的所有實例都替換為 'IExtendedEmailSender'。
if (email != null && !string.IsNullOrEmpty(email.Trim()))
{
var lst = new List<string>(
(email + "").Split(';').Select(tag => tag.Trim()).Where(tag => !string.IsNullOrEmpty(tag)));
foreach (var s in lst)
msg.AddTo(s);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.