2017-01-01 14 views
1

Я тестирую .Net Core MVC, который не поддерживает System.Net.Mail, единственная альтернатива, которую я нашел, это Mailkit, хорошо работает, но не может понять, как отправлять вложения, которые Я сохранил в моей базе данных двоичный файл. Я использовал следующее в MVC 5:.net Core Mailkit отправить прикрепление от массива

 var mail = new MailMessage(); 
    mail.Attachments.Add(new Attachment(new MemoryStream(attachment), 
    attachmentName, attachmentType)); 

Как это сделать в MailKit.

+0

Итак, в чем проблема? это работает, или у вас есть проблема? –

+0

Он работал с MVC 5 и System.Net.Mail. Я хочу использовать Mailkit. – hncl

+0

Показать текущий код, который использует Mailkit – haim770

ответ

3

Вам необходимо создать конструктор, а затем добавить в него вложения, вложения могут быть либо 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);    
    } }  
+1

Конструктор Attachment принимает только один аргумент. На основе jstedfast answer https://github.com/jstedfast/MailKit/issues/445. Я использовал builder.Attachments.Add (attachmentName, attachment, ContentType.Parse (attachmentType)); – hncl