Отправить экспортированный PDF как вложение по электронной почте

Я пытаюсь отправить PDF как вложение по почте, но я изо всех сил пытаюсь выяснить, какой должен быть путь. Я научился экспортировать Crystal Report в формат PDF, но не знаю, как указать путь во вложении:

Вот как я экспортирую PDF

Dim rptDocument As ReportDocument = New ReportDocument()
rptDocument.Load(mReportPath)
Dim exportOpts As ExportOptions = New ExportOptions()
Dim pdfOpts As PdfRtfWordFormatOptions = ExportOptions.CreatePdfRtfWordFormatOptions()
exportOpts.ExportFormatType = ExportFormatType.PortableDocFormat
exportOpts.ExportFormatOptions = pdfOpts
rptDocument.ExportToHttpResponse(exportOpts, Response, True, "")

И это код для отправки pdf по электронной почте:

Dim msg As New MailMessage()
msg.From = New MailAddress("[email protected]")
msg.[To].Add(recipient)
msg.Subject = "Procco Invoice"
msg.Body = "Invoice attached"
msg.Attachments.Add(New Attachment(filepath)) //Path should be given here
Dim client As New SmtpClient("smtp.gmail.com")
client.Port = 25
client.Credentials = New NetworkCredential("[email protected]", "<Procco>;1947")
client.EnableSsl = True
client.Send(msg)

Мой вопрос: как мне указать путь к PDF-файлу, который создается во время выполнения во вложении?


person Nuke    schedule 31.07.2015    source источник
comment
это приложение для Windows или веб-приложение?   -  person    schedule 31.07.2015


Ответы (1)


Вам нужно преобразовать PDF-файл в формат byte[], чтобы отправить его в виде вложения по электронной почте.

Пожалуйста, проверьте код ниже.

byte[] pdfarry = null;

using (MemoryStream ms = new MemoryStream())
{
  document.Save(ms, false);
  document.Close();

  pdfarry = ms.ToArray();
}


mailMessage.Attachments.Add(new Attachment(pdfarry, "testPDF.pdf", "application/pdf"));

smtpClient = new SmtpClient("xxxx");
smtpUserInfo = new System.Net.NetworkCredential("xxxx", "xxx", xxx");
smtpClient.Credentials = smtpUserInfo;
smtpClient.UseDefaultCredentials = false;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

smtpClient.Send(mailMessage);
person Deepak Kushvah    schedule 31.07.2015