ABCpdf прикрепить документ к электронной почте - PullRequest
2 голосов
/ 07 октября 2009

Я использовал ABDpdf для рендеринга PDF-файла и его потоковой передачи в браузер, но мне интересно, могу ли я прикрепить PDF-файл к письму Кто-нибудь когда-нибудь делал это?

Я надеюсь, что есть способ, который не требует, чтобы я сохранял pdf во временный каталог, затем прикреплял файл, затем удалял его.

Ответы [ 2 ]

9 голосов
/ 13 мая 2010

Меклариан прав, но одна маленькая вещь, на которую следует обратить внимание, это то, что после того, как вы сохранили pdf в своем потоке, вы захотите сбросить позицию своего потока обратно на 0. В противном случае отправленное вложение будет все foo -barred.

(Мне понадобилось около двух часов, чтобы понять это. Ой. Надеюсь помочь кому-нибудь еще сэкономить.)

    //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("you@you.com");
    msg.From = new MailAddress("me@me.com");
    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);
3 голосов
/ 22 октября 2009

Согласно документации на сайте поддержки ABCpdf PDF, существует перегрузка объекта Doc (), который поддерживает сохранение в поток. С помощью этой функции вы можете сохранить результаты сгенерированного PDF без явной записи на диск с помощью класса MemoryStream.

ABCpdf PDF Компонент для .NET: Doc.Save ()
MemoryStream (System.IO) @ MSDN

Создав MemoryStream, вы можете затем передать поток любому провайдеру электронной почты, который поддерживает создание вложений из потока. MailMessage в System.Net.Mail поддерживает это.

Класс MailMessage (System.Net.Mail) @ MSDN
MailMessage.Attachments Property @ MSDN
Класс навесного оборудования @ MSDN
Конструктор вложений @ MSDN

Наконец, если вы никогда ранее не использовали класс MailMessage, используйте класс SmtpClient для отправки вашего сообщения в пути.

Класс SmtpClient (System.Net.Mail)

...