简体   繁体   English

我可以在 ASP.Net Core 3.0 中使用 IEmailSender 接口向多个接收者发送电子邮件吗

[英]Can I Send Emails to Multiple Receivers using IEmailSender Interface in ASP.Net Core 3.0

I'm beginner to ASP.Net core.我是 ASP.Net 核心的初学者。 Actually I'm using ASP.Net Core 3.0.实际上我使用的是 ASP.Net Core 3.0。 I want to Send emails to Multiple Receivers.我想向多个接收者发送电子邮件。 Can I use IEmailSender Interface?我可以使用 IEmailSender 接口吗? Or any suggetion?或者有什么建议?

My IEmailSender implementation is like,我的 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 }
        );
    }
}

Can anyone help me?谁能帮我?

The MailMessage.To property is of the type MailAddressCollection . MailMessage.To 属性的类型为MailAddressCollection This means, that you can use the Add method to add multiple recipients.这意味着,您可以使用Add方法添加多个收件人。

MailMessage message = new MailMessage();
message.To.Add(new MailAddress("email1@evilcorp.com"));
message.To.Add(new MailAddress("email2@evilcorp.com"));

Actually I do it in another way.其实我是用另一种方式来做的。 Ill post it here and it will help for someone..生病张贴在这里,它会帮助某人..

  1. I create new interface called 'IExtendedEmailSender' inheriting the 'IEmailSender' interface.我创建了一个名为“IExtendedEmailSender”的新界面,继承了“IEmailSender”界面。

     public interface IExtendedEmailSender : IEmailSender { }
  2. Create new abstract method for send emails to multiple receivers.创建新的抽象方法来向多个接收者发送电子邮件。

     public interface IExtendedEmailSender : IEmailSender { Task SendBulkEmailAsync(string[] emails, string subject, string htmlMessage); }
  3. create new method for check mail address.创建用于检查邮件地址的新方法。

     public static bool CheckIsValiedEmailAddress(string address) { try { var addr = new System.Net.Mail.MailAddress(address); return addr.Address == address; } catch { return false; } }
  4. Create new class calling 'EmailSender' and implement the 'IExtendedEmailSender' interface.创建调用“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. Finally All instances of 'IEmailSender' replace to 'IExtendedEmailSender'.最后,'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