2017-01-01 7 views
1

私はテストしています.NetKoreaはSystem.Net.Mailをサポートしていませんが、私が見つけた唯一の選択肢はMailkitですが、うまく動作しますが添付ファイルを送信する方法私は自分のデータベースにバイナリとして保存しています。私はMVC 5で以下を使用しました:.netコアメールキットは、アタッチメントを配列から送信します

 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

メールキットを使用する現在のコードを表示 – 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

添付ファイルコンストラクタには引数が1つしかありません。 jstedfastの回答に基づいてhttps://github.com/jstedfast/MailKit/issues/445。私は を使用しましたbuilder.Attachments.Add(attachmentName、attachment、ContentType.Parse(attachmentType)); – hncl

関連する問題