C# 如何添加';名称';电子邮件中嵌入图像的标题

C# 如何添加';名称';电子邮件中嵌入图像的标题,c#,email,smtp,C#,Email,Smtp,我正在尝试发送一封带有嵌入图像的电子邮件(不是作为附件文件)。我会发邮件 我正在使用以下代码发送邮件: internal static void Send(SmtpServerConfigurations configurations, EmailMessage emailMsg) { using (var mail = InitializeMailMessage(emailMsg)) using (var smtpClient = CreateSmtpClient(config

我正在尝试发送一封带有嵌入图像的电子邮件(不是作为附件文件)。我会发邮件

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

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;
}
内部静态无效发送(SmtpServerConfigurations配置,EmailMessage emailMsg)
{
使用(var mail=initializeEmailMessage(emailMsg))
使用(var smtpClient=CreateSmtpClient(配置))
发送(邮件);
}
专用静态邮件消息初始化EmailMessage(EmailMessage emailMsg)
{
var mail=新邮件消息
{
From=新邮件地址(emailMsg.From),
Subject=emailMsg.Subject,
IsBodyHtml=emailMsg.IsBodyHtml
};
mail.To.Add(emailMsg.To);
AddMessageBody(emailMsg,mail);
回信;
}
私有静态void AddMessageBody(EmailMessage emailMsg,MailMessage mail)
{
if(emailMsg.IsBodyHtml)
{
var body=GetHtmlBody(emailMsg.body,emailMsg.EmbeddedImages);
mail.AlternateViews.Add(body);
}
其他的
mail.Body=emailMsg.Body;
}
私有静态AlternateView GetHtmlBody(字符串体,列表嵌入图像)
{
var alternateView=alternateView.CreateAlternateViewFromString(正文,null,
MediaTypeNames.Text.Html);
if(embeddedImages==null)返回alternateView;
foreach(嵌入图像中的var图像)
{
var imageToInline=新的LinkedResource(image.Path,MediaTypeNames.image.Jpeg);
imageToInline.ContentId=image.Id;
alternateView.LinkedResources.Add(ImageToOnline);
}
返回备选视图;
}
专用静态SmtpClient CreateSmtpClient(SmtpServerConfigurations配置)
{
var smtpClient=新的smtpClient(config.Host);
smtpClient.Port=config.PortNo;
if(config.IsAuthenticationRequired)
smtpClient.Credentials=
新的网络凭据(config.Username、config.Password);
其他的
smtpClient.UseDefaultCredentials=true;
smtpClient.EnableSsl=false;
返回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--
MIME版本:1.0
发件人:x@y.com
致:a@b.com
日期:2016年11月11日11:37:52+0530
主题:这是主题
内容类型:多部分/相关;
边界=——边界_3_1bb3db0a-d33f-46a7-a6ce-60249096160d;type=“text/html”
----边界_3_1BB3B3DB0A-d33f-46a7-a6ce-60249096160d
内容类型:text/html;字符集=美国ascii码
内容传输编码:引用可打印
=
这是body
----边界_3_1BB3B3DB0A-d33f-46a7-a6ce-60249096160d
内容类型:image/jpeg name=“filename.jpg”这将为您提供技巧

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

你没有显示任何代码,所以不可能说出什么是wrong@SamiKuhmonen,我已添加了发送电子邮件的代码。很乐意提供帮助。:)