如何在电子邮件消息中嵌入的图像中添加“名称”标题

3

我想发送一封带有嵌入式图片的邮件(不作为附件文件)。我已经成功发送了邮件。

我使用以下代码发送邮件:

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: x@y.com
To: a@b.com
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: x@y.com
To: a@b.com
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收件箱中单击图像上显示的下载按钮时,我会得到一个没有扩展名的“无名称”文件。除非用户将其扩展名更改为“.jpg / .jpeg”,否则该下载文件没有用途。 Download image button on gmail 当我尝试使用另一个组件(我没有代码)进行相同操作时,奇怪的是我能够下载具有正确文件名的图像。这两封邮件之间唯一的区别是“名称”标题。
请建议如何做到这一点或任何其他实现方式。

您没有展示任何代码,因此无法确定出现了什么问题。 - Sami Kuhmonen
@SamiKuhmonen,我已经添加了发送电子邮件的代码。 - Kamalesh Wankhede
1个回答

2
这将对您有所帮助。
imageToInline.ContentType.Name = "ImageName.jpg";

感到高兴能够帮忙。 :) - Mohit S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接