一段时间后,电子邮件中的附件开始丢失

本文关键字:开始 电子邮件 一段时间 | 更新日期: 2023-09-27 18:33:48

我在电子邮件中的附件中遇到问题。每隔几天,用户在电子邮件中找不到预期的附件。这似乎发生了大约 10-20 分钟,然后它自行更正,这意味着后面的电子邮件将包含附件。我不确定这背后的原因是什么。这就是我的代码的样子

public class EmailAttachment
{
    public string FileName { get; set; }
    public byte[] FileContent { get; set; }
} 

发送电子邮件的代码触发器

var emailAttachment= new EmailAttachment();
emailAttachment.FileContent = CreatePDFFile();
emailAttachment.FileName = "file.pdf";
EmailGeneratedCertificate(emailAttachment);

电子邮件准备代码

public void EmailGeneratedCertificate(EmailAttachment file)
{
    //file.FileContent is a byte array  
    var ms = new MemoryStream(file.FileContent);
    ms.Position = 0;
    var contentType = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Application.Pdf);
    var from = "xx@x.com";
    var fromTargetName = "XXX";
    var recepient="xx2@x.com"
    var subject = "Attachment";
    var body="<strong>Please find attachment.</strong>"
    var attachment = new Attachment(ms, contentType);
    attachment.ContentDisposition.FileName = file.FileName;
    var attachments = new List<Attachment>();
    attachments.Add(attachment);
    _mailService.Send(recepient, null, subject, body, attachments);
}

我想指出的另一件事是,我有两个网站在不同的APP POOL中运行,并且都有相同的电子邮件发送代码,如上所示,当此问题发生时,它似乎同时在两个网站上发生 10-15 分钟,然后自行纠正。请指教。

一段时间后,电子邮件中的附件开始丢失

在您的问题中,您没有编写所有代码CreatePDFFile()恕我直言是导致奇怪行为的原因,所以我只能从您发布的代码中猜测。

我看到 2 个主要问题:

  1. private byte[] ReadFile(string path) :您正在吞下任何异常,如果有一些异常,它将返回一个空字节数组,因此没有附件。
  2. MemoryStream EmailGeneratedCertificate(EmailAttachment file):您没有处理流,这可能会导致一些意外行为