如何将图像文件放入 MemoryStream 并将其附加到电子邮件中

How to put an image file into a MemoryStream and attach it into an Email

我加密了一张图片, 现在我需要读取该图像,解密并将其附加到电子邮件中。

第一步,我尝试放入一个图像文件并将其附加到电子邮件中, 但是当我收到电子邮件时,附件图像已损坏!

我尝试了很多不同的方法,但都没有成功。 (我创建了 windows 应用程序项目只是为了测试,最终我需要在 MVC 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",
      "sample@gmail.com",
      "sample subject",
      "sample body",
      new Attachment[] { attach });

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

}
using (MailMessage Message = new MailMessage())
{
    Message.From = new MailAddress("from@mail.com");
    Message.Subject = "My Subject";
    Message.Body = "My Body";
    Message.To.Add(new MailAddress("to@mail.com"));

    //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);
}

希望对您有所帮助