文本/普通附件内容显示在正文和附件中

时间:2018-04-12 08:01:55

标签: 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 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。

1 个答案:

答案 0 :(得分:1)

问题在于您没有设置文本或html正文,因此接收客户端会显示文本附件,因为它没有其他内容可供显示。

我已经更改了代码,因此如果您将TextBody设置为string.Empty,它只会添加一个空的内联文本部分作为邮件正文,因此现在接收客户端应该只是显示一个空体。