hnc*_*ncl 1 c# asp.net-mvc memorystream email-attachments mailkit
我正在测试不支持System.Net.Mail的.Net Core MVC,我发现的唯一选择是Mailkit,它工作正常,但无法弄清楚如何以二进制形式发送已存储在数据库中的附件。我在MVC 5中使用了以下内容:
var mail = new MailMessage();
mail.Attachments.Add(new Attachment(new MemoryStream(attachment),
attachmentName, attachmentType));
Run Code Online (Sandbox Code Playgroud)
如何在MailKit中做到这一点。
您需要创建一个构建器,然后向其添加附件,附件可以是IFromFile或二进制字符串。希望这可以帮助。
public async void SendEmail(string mailTo, string mailFrom, string cc, string subject, string message)
{
var emailMessage = new MimeMessage();
if (cc != null)
{
emailMessage.Cc.Add(new MailboxAddress(cc));
}
emailMessage.From.Add(new MailboxAddress("SenderName", "UserName"));
emailMessage.To.Add(new MailboxAddress("mailTo"));
emailMessage.Subject = subject;
var builder = new BodyBuilder { TextBody = message };
//Fetch the attachments from db
//considering one or more attachments
if (attachments != null)
{
foreach (var attachment in attachments.ToList())
{
builder.Attachments.Add(attachmentName, attachment, ContentType.Parse(attachmentType));
}
}
emailMessage.Body = builder.ToMessageBody();
using (var client = new SmtpClient())
{
var credentials = new NetworkCredential
{
UserName = "USERNAME",
Password = "PASSWORD"
};
await client.AuthenticateAsync(credentials);
await client.ConnectAsync("smtp.gmail.com", 587).ConfigureAwait(false);
await client.SendAsync(emailMessage).ConfigureAwait(false);
await client.DisconnectAsync(true).ConfigureAwait(false);
} }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4751 次 |
最近记录: |