.net Core Mailkit 从数组发送附件

.net Core Mailkit send attachement from array

我正在测试 .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);              
    }   }