我正试图附上一个与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);