2017-01-01 1 views
1

Je suis en train de tester .Net Core MVC, qui ne supporte pas System.Net.Mail, la seule alternative que j'ai trouvé est Mailkit, fonctionne bien, mais ne peut pas comprendre comment envoyer des pièces jointes J'ai stocké dans ma base de données en tant que binaire. J'ai utilisé ce qui suit dans MVC 5:.net Mail Mailkit envoyer une pièce jointe à partir du tableau

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

Comment puis-je le faire dans MailKit.

+0

Alors, quel est le problème? Est-ce que ça marche ou vous avez un problème? –

+0

Il a travaillé avec MVC 5 et System.Net.Mail. Je veux utiliser Mailkit. – hncl

+0

Affiche votre code actuel qui utilise Mailkit – haim770

Répondre

3

Vous devez créer un générateur, puis ajouter les pièces jointes, les pièces jointes peuvent être IFromFile ou Binary string. J'espère que cela aide.

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

Le constructeur Attachment prend un seul argument. Basé sur jstedfast réponse https://github.com/jstedfast/MailKit/issues/445. J'ai utilisé builder.Attachments.Add (attachmentName, attachment, ContentType.Parse (attachmentType)); – hncl