首页 文章

隐藏收件人的内联附件

提问于
浏览
2

我正在尝试生成MailMessage并为其设置各种附件 . 如果我将其添加为附件类型,则内联附件始终显示为jpeg,png或其他图像文件 . 我用于此方法的代码:

var mailMessage = new MailMessage();
// Set To, From, Body, Subject, etc.

foreach(var att in self.Attachments) {
    byte[] content = att.GetBytes();
    var attachment = new Attachment(new MemoryStream(content), att.Name);
    if(att.IsInline){
        attachment.ContentId = att.Name;
        attachment.ContentDisposition.Inline = true;
        attachment.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
    }
    mailMessage.Attachments.Add(attachment)
}

var view = AlternateView.CreateAlternateViewFromString(mailMessage.Body, Encoding.UTF8, MediaTypeNames.Text.Html);
mailMessage.AlternateViews.Add(view);

如果我将它们添加为LinkedResource,那么它们会在附件部分显示为dat文件 . 码:

var mailMessage = new MailMessage();
// Set To, From, Body, Subject, etc.

var view = AlternateView.CreateAlternateViewFromString(mailMessage.Body, Encoding.UTF8, MediaTypeNames.Text.Html);
foreach(var att in self.Attachments) {
    byte[] content = att.GetBytes();
    if(att.IsInline) {
        var inline = new LinkedResource(new MemoryStream(content), att.ContentType);
        inline.ContentId = att.Name;
        view.LinkedResources.Add(inline);
    }
    else {
        mailMessage.Attachments.Add(new Attachment(new MemoryStream(content),
        att.Name));
    }
}

mailMessage.AlternateViews.Add(view);

这两种方法都会生成正确的电子邮件,并将内联附件注入电子邮件正文中 . 在Outlook中预览电子邮件时,既不显示附件部分中的内联附件 . 两者都在Outlook中收到电子邮件时显示内联附件 . 我已确保Outlook选项的邮件部分中的Outlook设置如下:“以这种格式撰写邮件:HTML”和“当以RTF格式向Internet收件人发送邮件时:转换为HTML格式” .

任何建议都会受到高度赞赏,因为附加附件会给最终用户造成混淆 .

1 回答

  • 0

    我偶然发现这个问题有同样的问题,对我来说解决方案是添加附件的类型 .

    改变这个

    var inline = new LinkedResource("logo.png");
    

    对此

    var inline = new LinkedResource("logo.png", "image/png");
    

    It looks as if you are already doing this ,但也许这不符合预期?

    感谢这个页面提供答案:https://www.codeproject.com/articles/31897/embed-an-image-in-email-using-asp-net

相关问题