环境: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 MailboxAddress("name2","name2@def.com");
var builder = new BodyBuilder();
builder.textBody = "";
buider.Attachments.Add(file);
mail.body = builder.ToMessageBody(); //PROBLEM shows up here.
当我发送这封邮件时,iff附件是Text / Plain,它也会出现在正文中。请注意,当附件是xml,json。
时,不会发生此问题注意,我没有明确设置内容类型,因为我遵循MimeKit文档中提供的示例程序。
我附上下面的BodyBuilder :: ToMessageBody()相关代码供您准备参考。
BEGIN CODE - 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;
}
}
...
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 };
}
END CODE ... MIMEKIT ....
我很感激有人可以指出这个问题。
提前谢谢你,
对待Atish。
答案 0 :(得分:1)
问题在于您没有设置文本或html正文,因此接收客户端会显示文本附件,因为它没有其他内容可供显示。
我已经更改了代码,因此如果您将TextBody
设置为string.Empty
,它只会添加一个空的内联文本部分作为邮件正文,因此现在接收客户端应该只是显示一个空体。