O anexo começa ausente em um e-mail após um período de tempo

Estou tendo problemas com o anexo em um email. Depois de alguns dias, o usuário não encontra o anexo esperado no email. Isso parece estar acontecendo por cerca de 10-20 minutos e, em seguida, ele se corrigiu, o que significa que o email posterior conterá os anexos. Não tenho certeza qual poderia ser a razão por trás disso. É assim que meu código se parece

Modelo

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

Gatilho de código para enviar um email

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

Código de preparação de e-mail

 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="Please find attachment." var attachment = new Attachment(ms, contentType); attachment.ContentDisposition.FileName = file.FileName; var attachments = new List(); attachments.Add(attachment); _mailService.Send(recepient, null, subject, body, attachments); } 

Outra coisa que eu gostaria de salientar, eu tenho dois sites em execução dentro de um APP POOL diferente e ambos têm o mesmo código de envio de e-mail como acima e quando esse problema ocorrer, parece estar acontecendo em ambos os sites ao mesmo tempo por 10-15 minutos e então se corrigiu. Por favor sugira.

Na sua pergunta você não escreve todo o código de CreatePDFFile() que IMHO é a causa do comportamento estranho, então eu só posso adivinhar a partir do código que você postar.

Eu vejo 2 principais problemas:

  1. private byte[] ReadFile(string path) : você está engolindo qualquer exceção e se houver alguma, ele retornará uma matriz de bytes vazia para que não haja nenhum anexo.
  2. MemoryStream em EmailGeneratedCertificate(EmailAttachment file) : você não está descartando o stream e isso pode EmailGeneratedCertificate(EmailAttachment file) um comportamento inesperado
    Intereting Posts