On this page you will learn from code samples for programming in C#.Writing of the code to convert text email with attachments to pdf with pdf sdk in C# can be executed by programmers of any level using ByteScout Premium Suite. ByteScout Premium Suite is the bundle that includes twelve SDK products from ByteScout including tools and components for PDF, barcodes, spreadsheets, screen video recording and you can use it to convert text email with attachments to pdf with pdf sdk with C#.
The SDK samples given below describe how to quickly make your application do convert text email with attachments to pdf with pdf sdk in C# with the help of ByteScout Premium Suite. Follow the instructions from scratch to work and copy the C# code. Want to see how it works with your data then code testing will allow the function to be tested and work properly.
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)
using Bytescout.PDF; using Bytescout.PDF.Converters; using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing.Printing; using System.IO; using System.Text; namespace EmailToPDF_TextEmailWithAttachments { 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("TxtSampleEmailWithAttachment.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); #region Generate and save html // Get Html HtmlGenerator oHtmlGenerator = 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: {(sentOn.HasValue ? sentOn.Value.ToString("MM/dd/yyyy HH:mm") : "")}"); oHtmlGenerator.AddParagraphBodyItem({code}quot;To: {recipientsTo}"); oHtmlGenerator.AddParagraphBodyItem({code}quot;Subject: {msg.Subject}"); if (!string.IsNullOrEmpty(recipientsCc)) { oHtmlGenerator.AddParagraphBodyItem({code}quot;CC: {recipientsCc}"); } oHtmlGenerator.AddRawBodyItem("<hr/>"); var msgBodySplitted = msg.BodyText.Split("\n".ToCharArray()); foreach (var itmBody in msgBodySplitted) { oHtmlGenerator.AddParagraphBodyItem(itmBody); } // Generate Html oHtmlGenerator.SaveHtml("result.html"); #endregion using (HtmlToPdfConverter converter = 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) { using (Document outputDocument = new Document("result.pdf")) { foreach (MsgReader.Outlook.Storage.Attachment itmAttachment in msg.Attachments) { // Get Memory Stream MemoryStream attachmentMemoryStream = new MemoryStream(itmAttachment.Data); // Append Attachment Document docAttachment = new Document(attachmentMemoryStream); // Append all pages to main PDF foreach (Page item in docAttachment.Pages) { outputDocument.Pages.Add(item); } } 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(); } } } /// <summary> /// Html Generator class /// </summary> class HtmlGenerator { #region Constructor public HtmlGenerator() { this.StrBodyItems = new List<string>(); } #endregion #region Variable Declarations public string Title { get; set; } private List<string> StrBodyItems { get; set; } #endregion #region Methods /// <summary> /// Add Body Item /// </summary> public void AddRawBodyItem(string strBodyItem) { StrBodyItems.Add(strBodyItem); } /// <summary> /// Add Paragraph body item /// </summary> /// <param name="strText"></param> public void AddParagraphBodyItem(string strText) { StrBodyItems.Add(string.Format("<p style=''>{0}</p>", strText)); } /// <summary> /// Gets Generated Html /// </summary> /// <returns></returns> public string GetHtml() { StringBuilder oRetHtml = 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>"); foreach (var itemBody in StrBodyItems) { oRetHtml.Append(itemBody); } oRetHtml.Append("</body>"); oRetHtml.Append("</html>"); return oRetHtml.ToString(); } /// <summary> /// Save all Html /// </summary> /// <param name="fileName"></param> public void SaveHtml(string fileName) { var allHtml = GetHtml(); System.IO.File.WriteAllText(fileName, allHtml); } #endregion } }
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
Get Your API Key
Explore Web API Docs
Explore Web API Samples
<?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>
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
Get Your API Key
Explore Web API Docs
Explore Web API Samples
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
Get Your API Key
Explore Web API Docs
Explore Web API Samples
also available as: