我正在测试 .Net Core MVC,它不支持 System.Net.Mail,我发现的唯一替代方案是 Mailkit,效果很好,但无法弄清楚如何发送我以二进制形式存储在数据库中的附件。我在 MVC 5 中使用了以下内容:
var mail = new MailMessage();
mail.Attachments.Add(new Attachment(new MemoryStream(attachment),
attachmentName, attachmentType));
我怎样才能在 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);
} }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)