ByteScout Premium Suite - C# - Convert email with attachments to pdf with pdf sdk - ByteScout

ByteScout Premium Suite – C# – Convert email with attachments to pdf with pdf sdk

  • Home
  • /
  • Articles
  • /
  • ByteScout Premium Suite – C# – Convert email with attachments to pdf with pdf sdk

How to convert email with attachments to pdf with pdf sdk in C# using ByteScout Premium Suite

How to write a robust code in C# to convert email with attachments to pdf with pdf sdk with this step-by-step tutorial

Sample source code below will display you how to manage a complex task like convert email with attachments to pdf with pdf sdk in C#. ByteScout Premium Suite is the set that includes 12 SDK products from ByteScout including tools and components for PDF, barcodes, spreadsheets, screen video recording and you can use it to convert email with attachments to pdf with pdf sdk with C#.

The SDK samples given below describe how to quickly make your application do convert email with attachments to pdf with pdf sdk in C# with the help of ByteScout Premium Suite. Just copy and paste the code into your C# application’s code and follow the instructions. Applying C# 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.

Our website gives trial version of ByteScout Premium Suite for free. It also includes documentation and source code samples.

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

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

Program.cs
      
using System; using System.Diagnostics; using System.Drawing.Printing; using System.IO; using System.Text; using Bytescout.PDF; using Bytescout.PDF.Converters; using Font = Bytescout.PDF.Font; using SolidBrush = Bytescout.PDF.SolidBrush; namespace EmailToPDF_EmailWithAttachment { class Program { static void Main(string[] args) { try { // Parse MessageContents using MsgReader Library // MsgReader library can be obtained from: https://github.com/Sicos1977/MSGReader using (var msg = new MsgReader.Outlook.Storage.Message("EmailWithAttachments.msg")) { // Get Sender information var from = msg.GetEmailSender(false, false); // Message sent datetime var sentOn = msg.SentOn; // Recipient To information var recipientsTo = msg.GetEmailRecipients(MsgReader.Outlook.RecipientType.To, false, false); // Recipient CC information var recipientsCc = msg.GetEmailRecipients(MsgReader.Outlook.RecipientType.Cc, false, false); // Recipient BCC information var recipientBcc = msg.GetEmailRecipients(MsgReader.Outlook.RecipientType.Bcc, false, false); // Message subject var subject = msg.Subject; // Get Message Body var msgBody = msg.BodyHtml; // Prepare PDF docuemnt using (Document outputDocument = new Document()) { // Add registration keys outputDocument.RegistrationName = "demo"; outputDocument.RegistrationKey = "demo"; // Add page Page page = new Page(PaperFormat.A4); outputDocument.Pages.Add(page); // Add sample content Font font = new Font(StandardFonts.Times, 12); Brush brush = new SolidBrush(); // Add Email contents int topMargin = 20; page.Canvas.DrawString({code}quot;File Name: {msg.FileName}", font, brush, 20, (topMargin += 20)); page.Canvas.DrawString({code}quot;From: {from}", font, brush, 20, (topMargin += 20)); page.Canvas.DrawString({code}quot;Sent On: {(sentOn.HasValue ? sentOn.Value.ToString("MM/dd/yyyy HH:mm") : "")}", font, brush, 20, (topMargin += 20)); page.Canvas.DrawString({code}quot;To: {recipientsTo}", font, brush, 20, (topMargin += 20)); if (!string.IsNullOrEmpty(recipientsCc)) { page.Canvas.DrawString({code}quot;CC: {recipientsCc}", font, brush, 20, (topMargin += 20)); } if (!string.IsNullOrEmpty(recipientBcc)) { page.Canvas.DrawString({code}quot;BCC: {recipientBcc}", font, brush, 20, (topMargin += 20)); } page.Canvas.DrawString({code}quot;Subject: {subject}", font, brush, 20, (topMargin += 20)); page.Canvas.DrawString("Message body in next page.", font, brush, 20, (topMargin += 20)); // Convert Html body to PDF in order to retain all formatting. using (HtmlToPdfConverter converter = new HtmlToPdfConverter()) { converter.PageSize = PaperKind.A4; converter.Orientation = Bytescout.PDF.Converters.PaperOrientation.Portrait; // Get all inline attachment, and replace them foreach (MsgReader.Outlook.Storage.Attachment itmAttachment in msg.Attachments) { if (itmAttachment.IsInline) { var oData = itmAttachment.Data; var dataBase64 = Convert.ToBase64String(oData); // Replace within email msgBody = msgBody.Replace({code}quot;src=\"{itmAttachment.FileName}\"", {code}quot;src=\"{ "data:image/jpeg;base64," + dataBase64}\""); } } // Convert input HTML to stream byte[] byteArrayBody = Encoding.UTF8.GetBytes(msgBody); MemoryStream inputStream = new MemoryStream(byteArrayBody); // Create output stream to store generated PDF file using (var outputStream = new MemoryStream()) { // Convert HTML to PDF converter.ConvertHtmlToPdf(inputStream, outputStream); // Create new document from generated output stream Document docContent = new Document(outputStream); // Append all pages to main PDF foreach (Page item in docContent.Pages) { outputDocument.Pages.Add(item); } // Apped all other attachments foreach (MsgReader.Outlook.Storage.Attachment itmAttachment in msg.Attachments) { if (!itmAttachment.IsInline) { // Attachment is image, so adding accordingly var pageAttachment = new Page(PaperFormat.A4); Canvas canvas = pageAttachment.Canvas; var oAttachmentStream = new MemoryStream(itmAttachment.Data); Image imageAttachment = new Image(oAttachmentStream); canvas.DrawImage(imageAttachment, 20, 20); // Add attachment outputDocument.Pages.Add(pageAttachment); } } // Save output file outputDocument.Save("result.pdf"); } } // Open result document in default associated application (for demo purpose) ProcessStartInfo processStartInfo = new ProcessStartInfo("result.pdf"); processStartInfo.UseShellExecute = true; Process.Start(processStartInfo); } } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine("Press enter key to exit..."); Console.ReadLine(); } } } }

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.0" 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