2016-09-29 24 views
1

メッセージの本文に画像が埋め込まれたメールを送信しようとしています。埋め込みBase64イメージをGmailでデコードするためにC#で電子メールに送信

イメージはBase64文字列としてエンコードされます。内容は次のようになります。

"<p><span>My Name</span></p><img src=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA..." width=\"167\" height=\"167\" />" 

この例では、base64文字列が切り捨てられています。

私は添付ファイルとしてhtmlを送信するために次のコードを使用していますが、例の画像は電子メールプロバイダ(gmail/outlook)によってデコードされたままです。私はそれを正しくやっていないのか分かりません。

string htmlBody = "<p><span>My Name</span></p><img src=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA..." width=\"167\" height=\"167\" />"; 

    AlternateView avHtml = AlternateView.CreateAlternateViewFromString 
       (htmlBody, null, MediaTypeNames.Text.Html); 


    var mailTo = Config.Debug ? new MailAddress(Config.DebugEmailAddress) : new MailAddress("[email protected]"); 
    var mailFrom = new MailAddress("[email protected]"); 
    var mailMessage = new MailMessage(mailFrom, mailTo) { Subject = "hola q tal", Body = "holaaa", IsBodyHtml = true }; 

    mailMessage.To.Add("[email protected]"); 

    mailMessage.AlternateViews.Add(avHtml); 

var sender1 = new SmtpClient 
    { 
     Host = Config.SmtpHost, 
     Port = 25, 
     Credentials = new NetworkCredential(Config.SmtpHostUserName, Config.SmtpHostPassword) 
      }; 

     sender1.Send(mailMessage); 

私はどんなsugesstionsもありがとう。

答えて

0

あなたが送るメールに添付ファイルを添付したい場合、これは方法ではありません。あなたはそれがストリームおよび添付ファイルの適切なコンストラクタを使用するように変換する必要がありますBase64に添付ファイルがある場合、あなたははMailMessage

message.Attachments.Add(new Attachment(PathToAttachment)); 

に添付ファイルを追加する必要があります。

Attachment(Stream, ContentType) 

第のすべてのコンストラクターが含まれます。

+0

私が到達しようとしているのは、メッセージの本文のコンテンツに埋め込まれた画像を表示できることだけです。私はそれを行うために、私は添付ファイルとして本文のコンテンツ(HTML)を送信する必要があり、私はAlternateViewメッセージに追加する必要がありますので、私はちょっと混乱しています。たぶんあなたのアプローチの例がありますか? –

+0

@ D.B Chekcこの答え:http://stackoverflow.com/questions/18358534/send-inline-image-in-email – mybirthname

+0

はい。私はその例で自分のコードベースを構築しました。しかし、彼らはサーバー上にあるローカルファイルイメージを使用していて、明らかにそれらをbase64文字列に変換します。しかし私の場合、私はすでにbase64文字列を持っています。だから私はそれを動作させることができませんでした。 –

関連する問題