ByteScout Premium Suite - VB.NET - Convert email with attachemnts to pdf with pdf sdk - ByteScout

ByteScout Premium Suite – VB.NET – Convert email with attachemnts to pdf with pdf sdk

  • Home
  • /
  • Articles
  • /
  • ByteScout Premium Suite – VB.NET – Convert email with attachemnts to pdf with pdf sdk

How to convert email with attachemnts to pdf with pdf sdk in VB.NET using ByteScout Premium Suite

Learn to code in VB.NET to convert email with attachemnts to pdf with pdf sdk with this step-by-step tutorial

An easy to understand sample source code to learn how to convert email with attachemnts to pdf with pdf sdk in VB.NET ByteScout Premium Suite is the bundle that includes twelve SDK products from ByteScout including tools and components for PDF, barcodes, spreadsheets, screen video recording. It can be applied to convert email with attachemnts to pdf with pdf sdk using VB.NET.

These VB.NET code samples for VB.NET guide developers to speed up coding of the application when using ByteScout Premium Suite. This VB.NET sample code is all you need for your app. Just copy and paste the code, add references (if needs to) and you are all set! Applying VB.NET application mostly includes various stages of the software development so even if the functionality works please test it with your data and the production environment.

If you want to try other source code samples then the free trial version of ByteScout Premium Suite is available for download from our website. Just try other source code samples for VB.NET.

On-demand (REST Web API) version:
 Web API (on-demand version)

On-premise offline SDK for Windows:
 60 Day Free Trial (on-premise)

Program.vb
      
Imports System.Drawing.Printing Imports System.IO Imports System.Text Imports Bytescout.PDF Imports Bytescout.PDF.Converters Imports Font = Bytescout.PDF.Font Imports SolidBrush = Bytescout.PDF.SolidBrush Module Program Sub Main() Try ' Parse MessageContents using MsgReader Library ' MsgReader library can be obtained from: https://github.com/Sicos1977/MSGReader Using msg = New MsgReader.Outlook.Storage.Message("EmailWithAttachments.msg") ' Get Sender information Dim from = msg.GetEmailSender(False, False) ' Message sent datetime Dim sentOn = msg.SentOn ' Recipient To information Dim recipientsTo = msg.GetEmailRecipients(MsgReader.Outlook.RecipientType.[To], False, False) ' Recipient CC information Dim recipientsCc = msg.GetEmailRecipients(MsgReader.Outlook.RecipientType.Cc, False, False) ' Recipient BCC information Dim recipientBcc = msg.GetEmailRecipients(MsgReader.Outlook.RecipientType.Bcc, False, False) ' Message subject Dim subject = msg.Subject ' Get Message Body Dim msgBody = msg.BodyHtml ' Prepare PDF docuemnt Using outputDocument As Document = New Document() ' Add registration keys outputDocument.RegistrationName = "demo" outputDocument.RegistrationKey = "demo" ' Add page Dim page As Page = New Page(PaperFormat.A4) outputDocument.Pages.Add(page) ' Default font and brush Dim font As Font = New Font(StandardFonts.Times, 12) Dim brush As Brush = New SolidBrush() ' Add Email contents Dim topMargin As Integer = 0 topMargin += 20 page.Canvas.DrawString({code}quot;File Name: {msg.FileName}", font, brush, 20, topMargin) topMargin += 20 page.Canvas.DrawString({code}quot;From: {from}", font, brush, 20, topMargin) topMargin += 20 page.Canvas.DrawString({code}quot;Sent On: {(If(sentOn.HasValue, sentOn.Value.ToString("MM/dd/yyyy HH:mm"), ""))}", font, brush, 20, topMargin) topMargin += 20 page.Canvas.DrawString({code}quot;To: {recipientsTo}", font, brush, 20, topMargin) If Not String.IsNullOrEmpty(recipientsCc) Then topMargin += 20 page.Canvas.DrawString({code}quot;CC: {recipientsCc}", font, brush, 20, topMargin) End If If Not String.IsNullOrEmpty(recipientBcc) Then topMargin += 20 page.Canvas.DrawString({code}quot;BCC: {recipientBcc}", font, brush, 20, topMargin) End If topMargin += 20 page.Canvas.DrawString({code}quot;Subject: {subject}", font, brush, 20, topMargin) topMargin += 20 page.Canvas.DrawString("Message body in next page.", font, brush, 20, topMargin) Using converter As HtmlToPdfConverter = New HtmlToPdfConverter() converter.PageSize = PaperKind.A4 converter.Orientation = Bytescout.PDF.Converters.PaperOrientation.Portrait ' Get all inline attachment, and replace them For Each itmAttachment As MsgReader.Outlook.Storage.Attachment In msg.Attachments If itmAttachment.IsInline Then Dim oData = itmAttachment.Data Dim dataBase64 = Convert.ToBase64String(oData) ' Replace within email msgBody = msgBody.Replace({code}quot;src=""{itmAttachment.FileName}""", {code}quot;src=""data:image/jpeg;base64,{dataBase64}""") End If Next ' Convert input HTML to stream Dim byteArrayBody As Byte() = Encoding.UTF8.GetBytes(msgBody) Dim inputStream As MemoryStream = New MemoryStream(byteArrayBody) ' Create output stream to store generated PDF file Using outputStream = New MemoryStream() ' Convert HTML to PDF converter.ConvertHtmlToPdf(inputStream, outputStream) ' Create new document from generated output stream Dim docContent As Document = New Document(outputStream) ' Append all pages to main PDF For Each item As Page In docContent.Pages outputDocument.Pages.Add(item) Next ' Apped all other attachments For Each itmAttachment As MsgReader.Outlook.Storage.Attachment In msg.Attachments If Not itmAttachment.IsInline Then ' Attachment is image, so adding accordingly Dim pageAttachment = New Page(PaperFormat.A4) Dim canvas As Canvas = pageAttachment.Canvas Dim oAttachmentStream = New MemoryStream(itmAttachment.Data) Dim imageAttachment As Image = New Image(oAttachmentStream) canvas.DrawImage(imageAttachment, 20, 20) ' Add attachment outputDocument.Pages.Add(pageAttachment) End If Next ' Save output file outputDocument.Save("result.pdf") End Using End Using ' Open output file Process.Start("result.pdf") End Using End Using Catch ex As Exception Console.WriteLine(ex.Message) Console.WriteLine("Press enter key to exit...") Console.ReadLine() End Try End Sub End Module

ON-PREMISE OFFLINE SDK

60 Day Free Trial or Visit ByteScout Premium Suite Home Page

Explore ByteScout Premium Suite Documentation

Explore Samples

Sign Up for ByteScout Premium Suite Online Training

ON-DEMAND REST WEB API

Get Your API Key

Explore Web API Docs

Explore Web API Samples

packages.config
      
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="MsgReader" version="3.4.1" targetFramework="net45" /> <package id="OpenMcdf" version="2.2.1.3" targetFramework="net45" /> </packages>

ON-PREMISE OFFLINE SDK

60 Day Free Trial or Visit ByteScout Premium Suite Home Page

Explore ByteScout Premium Suite Documentation

Explore Samples

Sign Up for ByteScout Premium Suite Online Training

ON-DEMAND REST WEB API

Get Your API Key

Explore Web API Docs

Explore Web API Samples

VIDEO

ON-PREMISE OFFLINE SDK

60 Day Free Trial or Visit ByteScout Premium Suite Home Page

Explore ByteScout Premium Suite Documentation

Explore Samples

Sign Up for ByteScout Premium Suite Online Training

ON-DEMAND REST WEB API

Get Your API Key

Explore Web API Docs

Explore Web API Samples

Tutorials:

prev
next