C# 文本/普通附件内容显示在正文和附件中
环境:Windows 10、VisualStudio 2017、C# Mailkit/Mimekit版本2.0.1 问题:文本/普通附件内容显示在正文和附件中。我不会将附件内容出现在身体上 我正在尝试使用MimeKit.BodyBuilder类创建邮件,如下所示:C# 文本/普通附件内容显示在正文和附件中,c#,smtp,mime-types,mailkit,mimekit,C#,Smtp,Mime Types,Mailkit,Mimekit,环境:Windows 10、VisualStudio 2017、C# Mailkit/Mimekit版本2.0.1 问题:文本/普通附件内容显示在正文和附件中。我不会将附件内容出现在身体上 我正在尝试使用MimeKit.BodyBuilder类创建邮件,如下所示: var mail = new MailMessage(); mail.To.Add(new MailboxAddress("name1","name1@def.com"); mail.From.Add(new MailboxAddre
var mail = new MailMessage();
mail.To.Add(new MailboxAddress("name1","name1@def.com");
mail.From.Add(new MailboxAddress("name2","name2@def.com");
var builder = new BodyBuilder();
builder.textBody = "";
buider.Attachments.Add(file);
mail.body = builder.ToMessageBody(); //PROBLEM shows up here.
当我发送这封邮件时,iff附加的文件是文本/纯文本,它也显示在正文中。注意,当附件是xml、json时,不会出现此问题
注意,我没有显式地设置内容类型,因为我遵循MimeKit文档中提供的示例程序
随函附上BodyBuilder::ToMessageBody()相关代码,供您随时参考
开始代码-MIMEKIT
public MimeEntity ToMessageBody ()
{
MultipartAlternative alternative = null;
MimeEntity body = null;
if (!string.IsNullOrEmpty (TextBody)) {
var text = new TextPart ("plain");
text.Text = TextBody;
if (!string.IsNullOrEmpty (HtmlBody)) {
alternative = new MultipartAlternative ();
alternative.Add (text);
body = alternative;
} else {
body = text;
}
}
结束代码…MIMEKIT
如果有人能指出这个问题,我将不胜感激
提前谢谢大家,
关于Atish。问题在于您没有设置文本或html正文,因此接收客户端显示文本附件,因为它没有其他要显示的内容
我更改了代码,因此如果将
TextBody
设置为string.Empty
,它只会添加一个空的内联文本部分作为消息体,因此,现在接收客户端应该只显示一个空的正文。您可以将附件添加到“mail.attachments”属性。.这里的“mail”是MimeKit.MimeMessage类对象,它的附件属性仅为get类型。
if (Attachments.Count > 0) {
var mixed = new Multipart ("mixed");
if (body != null)
mixed.Add (body);
foreach (var attachment in Attachments)
mixed.Add (attachment);
body = mixed;
}
return body ?? new TextPart ("plain") { Text = string.Empty };
}