2016-11-11 54 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

感到高兴来帮忙。 :) –

相关问题