ByteScout Premium Suite - VB.NET - Convert text email with attachments to pdf with pdf sdk - ByteScout
Announcement
Our ByteScout SDK products are sunsetting as we focus on expanding new solutions.
Learn More Open modal
Close modal
Announcement Important Update
ByteScout SDK Sunsetting Notice
Our ByteScout SDK products are sunsetting as we focus on our new & improved solutions. Thank you for being part of our journey, and we look forward to supporting you in this next chapter!

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

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

How to convert text email with attachments to pdf with pdf sdk in VB.NET with ByteScout Premium Suite

Learning is essential in computer world and the tutorial below will demonstrate how to convert text email with attachments to pdf with pdf sdk in VB.NET

The coding instructions are formulated to help you to try-out the features without the requirement to write your own code. ByteScout Premium Suite is the set that includes 12 SDK products from ByteScout including tools and components for PDF, barcodes, spreadsheets, screen video recording. It can be applied to convert text email with attachments to pdf with pdf sdk using VB.NET.

Want to save time? You will save a lot of time on writing and testing code as you may just take the VB.NET code from ByteScout Premium Suite for convert text email with attachments to pdf with pdf sdk below and use it in your application. IF you want to implement the functionality, just copy and paste this code for VB.NET below into your code editor with your app, compile and run your application. Enjoy writing a code with ready-to-use sample VB.NET codes.

You can download free trial version of ByteScout Premium Suite from our website to see and try many others 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 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("TxtSampleEmailWithAttachment.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) #Region "Generate and save HTML" Dim oHtmlGenerator As New HtmlGenerator() oHtmlGenerator.Title = {code}quot;Subject: {msg.Subject}" oHtmlGenerator.AddParagraphBodyItem({code}quot;File Name: {msg.FileName}") oHtmlGenerator.AddParagraphBodyItem({code}quot;From: {from}") oHtmlGenerator.AddParagraphBodyItem({code}quot;Sent On: {(If(sentOn.HasValue, sentOn.Value.ToString("MM/dd/yyyy HH:mm"), ""))}") oHtmlGenerator.AddParagraphBodyItem({code}quot;To: {recipientsTo}") oHtmlGenerator.AddParagraphBodyItem({code}quot;Subject: {msg.Subject}") If Not String.IsNullOrEmpty(recipientsCc) Then oHtmlGenerator.AddParagraphBodyItem({code}quot;CC: {recipientsCc}") End If If Not String.IsNullOrEmpty(recipientBcc) Then oHtmlGenerator.AddParagraphBodyItem({code}quot;BCC: {recipientBcc}") End If oHtmlGenerator.AddRawBodyItem("<hr/>") Dim msgBodySplitted = msg.BodyText.Split(vbLf.ToCharArray()) For Each itmBody In msgBodySplitted oHtmlGenerator.AddParagraphBodyItem(itmBody) Next ' Generate Html oHtmlGenerator.SaveHtml("result.html") #End Region Using Converter As HtmlToPdfConverter = New HtmlToPdfConverter() Converter.PageSize = PaperKind.A4 Converter.Orientation = Bytescout.PDF.Converters.PaperOrientation.Portrait Converter.ConvertHtmlToPdf("result.html", "result.pdf") ' Get attachments from message (if any, and append to document) If msg.Attachments.Count > 0 Then Using outputDocument As New Document("result.pdf") For Each itmAttachment As MsgReader.Outlook.Storage.Attachment In msg.Attachments ' Get Memory Stream Dim attachmentMemoryStream As MemoryStream = New MemoryStream(itmAttachment.Data) ' Append Attachment Dim docAttachment As Document = New Document(attachmentMemoryStream) ' Append all pages to main PDF For Each item As Page In docAttachment.Pages outputDocument.Pages.Add(item) Next Next ' Save output file outputDocument.Save("result.pdf") End Using End If ' Open output file Dim processStartInfo As ProcessStartInfo = New ProcessStartInfo("result.pdf") processStartInfo.UseShellExecute = True Process.Start(processStartInfo) 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 ''' <summary> ''' Html Generator class ''' </summary> Class HtmlGenerator #Region "Constructors and variable declarations" Public Sub New() Me.StrBodyItems = New List(Of String)() End Sub Public Property Title As String Private Property StrBodyItems As List(Of String) #End Region #Region "Methods" ''' <summary> ''' Add Body Item ''' </summary> Public Sub AddRawBodyItem(ByVal strBodyItem As String) StrBodyItems.Add(strBodyItem) End Sub ''' <summary> ''' Add Paragraph body item ''' </summary> Public Sub AddParagraphBodyItem(ByVal strText As String) StrBodyItems.Add(String.Format("<p style=''>{0}</p>", strText)) End Sub ''' <summary> ''' Gets generated HTML ''' </summary> Public Function GetHtml() As String Dim oRetHtml As StringBuilder = New StringBuilder(String.Empty) oRetHtml.Append("<html>") oRetHtml.Append("<head>") oRetHtml.AppendFormat("<title>{0}</title>", Title) oRetHtml.Append("<style>p { line-height: 107.9 %; margin-bottom: 13pt; font-family: 'Arial', 'sans-serif'; font-size: 15pt; margin-top: 0; margin-left: 0; margin-right: 0; }</style>") oRetHtml.Append("</head>") oRetHtml.Append("<body>") For Each itemBody In StrBodyItems oRetHtml.Append(itemBody) Next oRetHtml.Append("</body>") oRetHtml.Append("</html>") Return oRetHtml.ToString() End Function ''' <summary> ''' Save all HTML ''' </summary> Public Sub SaveHtml(ByVal fileName As String) Dim allHtml = GetHtml() System.IO.File.WriteAllText(fileName, allHtml) End Sub #End Region End Class 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