MimeKit将附件添加到从mht文件加载的邮件中

时间:2017-09-27 14:12:14

标签: c# .net mailkit mhtml

您好我们正在尝试使用MailKit开发邮件发送系统。我们有一组使用WORD创建并保存为MHTML文件的电子邮件模板。当我们使用MailKit从MHT文件创建MimeMessage时,整个工作正常。

但是在发布此消息后,我无法看到添加附件的方法。

目前我们正在尝试以下方法。

private void SendEmail(string templatePath, List<string> attachments)
    {
        // Load the MHT Template
        var mimeMessage = MimeMessage.Load(templatePath);

        mimeMessage.From.Add(new MailBoxAddress("test@Test.com"));
        mimeMessage.To.Add(new MailBoxAddress("test@Test.com"));

        foreach (var attachment in attachments)
        {
            var fileAttachment = new MimePart()
            {
                ContentObject = new ContentObject(File.OpenRead(Path.Combine(attachment), ContentEncoding.Default),
                ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
                ContentTransferEncoding = ContentEncoding.Binary,
                FileName = Path.GetFileName(attachment)
            };

            // Attachments is a read only Enumerable here.
            mimeMessage.Attachments.Add
        }

    }

2 个答案:

答案 0 :(得分:0)

您需要遍历邮件的MIME树结构,直到找到要添加“附件”的Multipart,然后使用Multipart.Add()方法。

请记住,消息是嵌套的树结构,而不是一个定义良好的结构,它只有一个消息体(甚至只有2个)和一个附件列表。这比那复杂得多,所以MimeMessage.Attachments实际上没办法“做正确的事”。

答案 1 :(得分:0)

我通过BodyBuilder添加了附件:

BodyBuilder _body = new BodyBuilder
{
    HtmlBody = message
};
_body.Attachments.Add(_fileName, _stream);
_email.Body = _body.ToMessageBody();

查看此帖子stackoverflow