2016-11-11 134 views
3

我想發送一封帶有嵌入式圖像的電子郵件(不作爲附件文件)。我可以發送郵件。如何在EmailMessage中添加'名稱'標題到嵌入圖像

我用下面的代碼發送郵件:

internal static void Send(SmtpServerConfigurations configurations, EmailMessage emailMsg) 
{ 
    using (var mail = InitializeMailMessage(emailMsg)) 
    using (var smtpClient = CreateSmtpClient(configurations)) 
     smtpClient.Send(mail); 
} 

private static MailMessage InitializeMailMessage(EmailMessage emailMsg) 
{ 
    var mail = new MailMessage 
       { 
        From = new MailAddress(emailMsg.From), 
        Subject = emailMsg.Subject, 
        IsBodyHtml = emailMsg.IsBodyHtml 
       }; 

    mail.To.Add(emailMsg.To); 

    AddMessageBody(emailMsg, mail); 

    return mail; 
} 

private static void AddMessageBody(EmailMessage emailMsg, MailMessage mail) 
{ 
    if (emailMsg.IsBodyHtml) 
    { 
     var body = GetHtmlBody(emailMsg.Body, emailMsg.EmbeddedImages); 
     mail.AlternateViews.Add(body); 
    } 
    else 
     mail.Body = emailMsg.Body; 
} 

private static AlternateView GetHtmlBody(string body, List<EmbeddedImage> embeddedImages) 
{ 
    var alternateView = AlternateView.CreateAlternateViewFromString(body, null, 
     MediaTypeNames.Text.Html); 

    if (embeddedImages == null) return alternateView; 

    foreach (var image in embeddedImages) 
    { 
     var imageToInline = new LinkedResource(image.Path, MediaTypeNames.Image.Jpeg); 
     imageToInline.ContentId = image.Id; 
     alternateView.LinkedResources.Add(imageToInline); 
    } 
    return alternateView; 
} 

private static SmtpClient CreateSmtpClient(SmtpServerConfigurations config) 
{ 
    var smtpClient = new SmtpClient(config.Host); 
    smtpClient.Port = config.PortNo; 

    if (config.IsAuthenticationRequired) 
     smtpClient.Credentials = 
      new NetworkCredential(config.Username, config.Password); 
    else 
     smtpClient.UseDefaultCredentials = true; 

    smtpClient.EnableSsl = false; 
    return smtpClient; 
} 

但是,使用上面的代碼發送郵件不在格式我想要的。

我想要的是;

MIME-Version: 1.0 
From: [email protected] 
To: [email protected] 
Date: 11 Nov 2016 11:37:52 +0530 
Subject: This is subject 
Content-Type: multipart/related; 
boundary=--boundary_3_1bb3db0a-d33f-46a7-a6ce-60249096160d; type="text/html" 


----boundary_3_1bb3db0a-d33f-46a7-a6ce-60249096160d 
Content-Type: text/html; charset=us-ascii 
Content-Transfer-Encoding: quoted-printable 

<!DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN" "= 
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xm= 
lns =3D "http://www.w3.org/1999/xhtml" > <head ><meta http - equi= 
v =3D "content-type" content =3D "text/html; charset=3DUTF-8" /><= 
/head ><body style =3D"font-family: Segoe UI; text-align:left;" >= 
This is body<br /><img alt =3D"" src =3D"cid:05393c56-15c1-4652-a= 
31f-9cc513726bc0" height=3D"50" width=3D"50"/></body ></html > 
----boundary_3_1bb3db0a-d33f-46a7-a6ce-60249096160d 
Content-Type: image/jpeg name="filename.jpg"   <<-----This is what I want. 
Content-Transfer-Encoding: base64 
Content-ID: <05393c56-15c1-4652-a31f-9cc513726bc0> 

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMF 
BwYHBwcGBwcI 
. 
. 
. 
/w20K7sPt8ul2st3/z0dd36Hj9K9I+HHwj8M6/rLaldaJp8l6y 
kGRYgn6LgfpXve0pundwQmk9z//Z 
----boundary_3_1bb3db0a-d33f-46a7-a6ce-60249096160d-- 

我所得到的是;

MIME-Version: 1.0 
From: [email protected] 
To: [email protected] 
Date: 11 Nov 2016 11:37:52 +0530 
Subject: This is subject 
Content-Type: multipart/related; 
boundary=--boundary_3_1bb3db0a-d33f-46a7-a6ce-60249096160d; type="text/html" 


----boundary_3_1bb3db0a-d33f-46a7-a6ce-60249096160d 
Content-Type: text/html; charset=us-ascii 
Content-Transfer-Encoding: quoted-printable 

<!DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN" "= 
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xm= 
lns =3D "http://www.w3.org/1999/xhtml" > <head ><meta http - equi= 
v =3D "content-type" content =3D "text/html; charset=3DUTF-8" /><= 
/head ><body style =3D"font-family: Segoe UI; text-align:left;" >= 
This is body<br /><img alt =3D"" src =3D"cid:05393c56-15c1-4652-a= 
31f-9cc513726bc0" height=3D"50" width=3D"50"/></body ></html > 
----boundary_3_1bb3db0a-d33f-46a7-a6ce-60249096160d 
Content-Type: image/jpeg 
Content-Transfer-Encoding: base64 
Content-ID: <05393c56-15c1-4652-a31f-9cc513726bc0> 

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMF 
BwYHBwcGBwcI 
. 
. 
. 
/w20K7sPt8ul2st3/z0dd36Hj9K9I+HHwj8M6/rLaldaJp8l6y 
kGRYgn6LgfpXve0pundwQmk9z//Z 
----boundary_3_1bb3db0a-d33f-46a7-a6ce-60249096160d-- 

我怎麼能實現原郵件的嵌入式圖像節定製的「名稱」頭?

我想添加該標題是因爲;

當我點擊Gmail收件箱中圖像上顯示的下載按鈕時,我會得到沒有擴展名的「noname」文件。除非用戶將其擴展名更改爲「.jpg/.jpeg」,否則該下載的文件無用。 Download image button on gmail

當我奇怪地嘗試了與另一個組件(我沒有代碼)相同的時候,我可以用正確的文件名下載該映像。這兩封電子郵件的唯一區別是「名稱」標題。

請建議我如何做到這一點或任何其他方式來實現它。

+0

你沒有表現出那麼很難說什麼是錯 –

+0

@SamiKuhmonen任何代碼,我已經加入我的代碼發送電子郵件。 –

回答

2

這將這樣的伎倆爲您

imageToInline.ContentType.Name = "ImageName.jpg"; 
+0

謝謝你!這有效:)感謝您的幫助! –

+0

感到高興來幫忙。 :) –

相關問題