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

时间:2016-02-09 14:25:15

标签: c# email-attachments

我在电子邮件中遇到附件问题。每隔几天,用户就无法在电子邮件中找到预期的附件。这似乎发生了大约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分钟,然后自行纠正。请建议。

1 个答案:

答案 0 :(得分:3)

在您的问题中,您不会写出CreatePDFFile()的所有代码,即恕我直言是造成这种奇怪行为的原因所以我只能从你发布的代码中猜出来。

我看到了两个主要问题:

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