[英]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..
生病张贴在这里,它会帮助某人..
I create new interface called 'IExtendedEmailSender' inheriting the 'IEmailSender' interface.我创建了一个名为“IExtendedEmailSender”的新界面,继承了“IEmailSender”界面。
public interface IExtendedEmailSender : IEmailSender { }
Create new abstract method for send emails to multiple receivers.创建新的抽象方法来向多个接收者发送电子邮件。
public interface IExtendedEmailSender : IEmailSender { Task SendBulkEmailAsync(string[] emails, string subject, string htmlMessage); }
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; } }
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); ; } }
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.