将动态生成的pdf附加到电子邮件c# .net网页



我正试图附上一个与NReco一起制作的pdf。PdfGenerator转换为系统发送的电子邮件。

我:-

Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Disposition", "attachment; filename=test.pdf");
     var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter();
    var pdfBytes = htmlToPdf.GeneratePdfFromFile("http://{siteName}/templates/PasswordResetEmail2.cshtml", null);
    Response.BinaryWrite(pdfBytes);

这个可以把pdf文件放到save弹出窗口

但是我需要把这个发到我的系统邮箱,

WebMail.Send(
     to: email,
     subject: "Please see attached invoice",
     body: BodyTemplate,
     isBodyHtml: true,
     filesToAttach: invoice.pdf);

希望你能帮忙。

WebMail.Send()似乎只从硬盘发送文件。

你可以使用System.Net.Mail.SmtpClient发送一个MailMessage。MailMessage有一个方法可以从一个流中添加一个附件,也就是使用MemoryStream添加一个byte[]。

SmtpClient smtpClient = new SmtpClient(WebMail.SmtpServer);
MailMessage email = new MailMessage(...);
var stream = new System.IO.MemoryStream(pdfBytes);
email .Attachments.Add(new Attachment(stream, "invoice.pdf"));
smtpClient.Send(email);

下面的Olivier是正确的,我只需要一些其他的东西来使它工作。

由于我是asp.net网页的新手,我需要在文件的顶部声明一行,首先使SMTPClient工作。

@using System.Net.Mail;

然后在web配置中添加smtp信息。

<system.net>
    <mailSettings>
      <smtp>
        <network host="host_name" port="25" userName="user name" password="password" defaultCredentials="false" />
      </smtp>
    </mailSettings>

然后创建电子邮件。

SmtpClient smtpClient = new SmtpClient(WebMail.SmtpServer);
            MailMessage email1 = new MailMessage();
            email1.IsBodyHtml = true;
            email1.From = new MailAddress("from@email.com");
            email1.To.Add(new MailAddress(sendemail));
            //email1.CC.Add(new MailAddress("carboncopy@foo.bar.com"));
            email1.Body = BodyTemplate;
            email1.Subject = "Please reset your password";
            var stream = new System.IO.MemoryStream(pdfBytes);
            email1.Attachments.Add(new Attachment(stream, "invoice.pdf"));
            smtpClient.Send(email1);

相关内容

  • 没有找到相关文章

最新更新