簡體   English   中英

我可以在 ASP.Net Core 3.0 中使用 IEmailSender 接口向多個接收者發送電子郵件嗎

[英]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"));

其實我是用另一種方式來做的。 生病張貼在這里,它會幫助某人..

  1. 我創建了一個名為“IExtendedEmailSender”的新界面,繼承了“IEmailSender”界面。

     public interface IExtendedEmailSender : IEmailSender { }
  2. 創建新的抽象方法來向多個接收者發送電子郵件。

     public interface IExtendedEmailSender : IEmailSender { Task SendBulkEmailAsync(string[] emails, string subject, string htmlMessage); }
  3. 創建用於檢查郵件地址的新方法。

     public static bool CheckIsValiedEmailAddress(string address) { try { var addr = new System.Net.Mail.MailAddress(address); return addr.Address == address; } catch { return false; } }
  4. 創建調用“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); ; } }
  5. 最后,'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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM