C# 我可以使用ASP.Net Core 3.0中的IEmailSender接口向多个收件人发送电子邮件吗
我是ASP.Net核心的初学者。实际上我正在使用ASP.NETCore3.0。我想向多个接收者发送电子邮件。我可以使用IEmailSender接口吗?或者有什么建议 我的IEmailSender实现如下:C# 我可以使用ASP.Net Core 3.0中的IEmailSender接口向多个收件人发送电子邮件吗,c#,email,asp.net-core,C#,Email,Asp.net Core,我是ASP.Net核心的初学者。实际上我正在使用ASP.NETCore3.0。我想向多个接收者发送电子邮件。我可以使用IEmailSender接口吗?或者有什么建议 我的IEmailSender实现如下: public class EmailSender : IEmailSender { private string host; private int port; private bool enableSSL; private string userName;
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 }
);
}
}
有人能帮我吗?邮件。收件人的类型如下。这意味着您可以使用
Add
方法添加多个收件人
MailMessage message = new MailMessage();
message.To.Add(new MailAddress("email1@evilcorp.com"));
message.To.Add(new MailAddress("email2@evilcorp.com"));
事实上我是用另一种方式做的。我会把它贴在这里,它会对某人有所帮助
public interface IExtendedEmailSender : IEmailSender
{
}
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); ;
}
}
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;
}
}
public interface IExtendedEmailSender : IEmailSender
{
}
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); ;
}
}
if(email!=null&&!string.IsNullOrEmpty(email.Trim())
{
var lst=新列表(
(email+“”)。拆分(“;”)。选择(tag=>tag.Trim())。其中(tag=>!string.IsNullOrEmpty(tag));
foreach(lst中的var s)
msg.AddTo(s);
}
MailMessage的To
字段是一个集合。请参见此处:您无法向其中添加多个MailAddress。如何将MailMessage集合传递给SendEmailAsync方法?如何将MailAddressCollection传递给SendEmailAsync方法?您不需要。您将邮件消息传递给SendEmailAsync方法,明白了。谢谢