2017-04-20 1 views
0

J'ai crypté une image, Maintenant, j'ai besoin de lire cette image, décrypter et l'attacher dans un e-mail.Comment mettre un fichier image dans un MemoryStream et l'attacher dans un Email

Pour la première étape, j'essaie de mettre un fichier image et l'attacher dans un Email, mais quand je reçois un email, l'image attachée est corrompue!

J'essaie de nombreuses façons, mais sans succès. (j'ai créé fenêtres projet d'application juste pour le test, Finalement, j'ai besoin d'utiliser la solution dans MVC projet d'application Web)

private void btnSend_Click(object sender, EventArgs e) 
{ 
    var filePath = "D:\\3.jpg"; // path to none encrypted image file 

    var ms = new MemoryStream(File.ReadAllBytes(filePath)); 

    // Create attachment 
    var attach = new Attachment(ms, new ContentType(MediaTypeNames.Image.Jpeg)); 
    attach.ContentDisposition.FileName = "sample.jpg"; 

    // Send Email 
    IMailSender mailSender = new MailSender(); 
    var isSuccess = mailSender.Send(
     "sample email title", 
     "[email protected]", 
     "sample subject", 
     "sample body", 
     new Attachment[] { attach }); 

    MessageBox.Show(isSuccess ? "Email sent successfully" : mailSender.ErrorMessage); 

} 
+0

après avoir chargé l'image de flux avez-vous mis la chercher une position droite? ms.Seek (0, SeekOrigin.Begin); – Digvijay

Répondre

0
using (MailMessage Message = new MailMessage()) 
{ 
    Message.From = new MailAddress("[email protected]"); 
    Message.Subject = "My Subject"; 
    Message.Body = "My Body"; 
    Message.To.Add(new MailAddress("[email protected]")); 

    //Attach more file 
    foreach (var item in Attachment) 
    { 
     MemoryStream ms = new MemoryStream(File.ReadAllBytes(filePath)); 

     Attachment Data = new Attachment(ms, "FileName"); 
     ContentDisposition Disposition = Data.ContentDisposition; 
     Disposition.CreationDate = DateTime.UtcNow.AddHours(-5); 
     Disposition.ModificationDate = DateTime.UtcNow.AddHours(-5); 
     Disposition.ReadDate = DateTime.UtcNow.AddHours(-5); 
     Data.ContentType = new ContentType(MediaTypeNames.Application.Pdf); 
     Message.Attachments.Add(Data); 
    } 

    SmtpClient smtp = new SmtpClient("SmtpAddress", "SmtpPort"); 
    smtp.Credentials = new NetworkCredential("SmtpUser", "SmtpPassword"); 
    await smtp.SendMailAsync(Message); 
} 

J'espère que cette aide

+0

merci pour votre aide. J'ajoute 'ContentDisposition Disposition = Data.ContentDisposition; Disposition.CreationDate = DateTime.UtcNow.AddHours (-5); Disposition.ModificationDate = DateTime.UtcNow.AddHours (-5); Disposition.ReadDate = DateTime.UtcNow.AddHours (-5); 'dans mes codes et cela fonctionne très bien. Merci beaucoup – Moradof