我已經使用ABDpdf來渲染PDF並將其傳輸到瀏覽器,但是我想知道是否可以將渲染的PDF附加到電子郵件中。有沒有人曾經這樣做過?ABCpdf將Doc附加到電子郵件
我希望有一種方法,不需要我將PDF保存到臨時目錄,然後附加文件,然後將其刪除。
我已經使用ABDpdf來渲染PDF並將其傳輸到瀏覽器,但是我想知道是否可以將渲染的PDF附加到電子郵件中。有沒有人曾經這樣做過?ABCpdf將Doc附加到電子郵件
我希望有一種方法,不需要我將PDF保存到臨時目錄,然後附加文件,然後將其刪除。
根據ABCpdf PDF支持網站上的文檔,Doc()對象支持保存到流的重載。使用此功能,您可以將結果保存爲生成的PDF,而無需使用MemoryStream類顯式寫入磁盤。
ABCpdf PDF Component for .NET : Doc.Save()
MemoryStream (System.IO) @ MSDN
隨着創建一個MemoryStream,你便可以傳遞到支持來自流產生任何附件的電子郵件提供商流。 System.Net.Mail中的MailMessage支持這一點。
MailMessage Class (System.Net.Mail) @ MSDN
MailMessage.Attachments Property @ MSDN
Attachments Class @ MSDN
Attachments Constructor @ MSDN
最後,如果你以前從未使用過的類MAILMESSAGE,使用SmtpClient類發送郵件的道路上。
Meklarian是正確的,但有一點要指出的是,您保存的PDF到您的流之後,你會想回來重置流位置爲0。否則附件是發送將是所有foo禁止。
(我花了大約兩個小時來弄明白。哎喲,希望能幫助別人節省一些時間。)
//Create the pdf doc
Doc theDoc = new Doc();
theDoc.FontSize = 12;
theDoc.AddText("Hello, World!");
//Save it to the Stream
Stream pdf = new MemoryStream();
theDoc.Save(pdf);
theDoc.Clear();
//Important to reset back to the begining of the stream!!!
pdf.Position = 0;
//Send the message
MailMessage msg = new MailMessage();
msg.To.Add("[email protected]");
msg.From = new MailAddress("[email protected]");
msg.Subject = "Hello";
msg.Body = "World";
msg.Attachments.Add(new Attachment(pdf, "MyPDF.pdf", "application/pdf"));
SmtpClient smtp = new SmtpClient("smtp.yourserver.com");
smtp.Send(msg);
+1 ......我忘了復位在其它場景流位置,以及。 – meklarian 2010-05-21 19:24:05
+1 ..我只花了一個小時試圖弄清爲什麼我的文件總是0字節。 – philwilks 2011-01-03 17:05:05
感謝您發表您的答案。 – 2015-11-21 16:08:06