Send a Word file as an Email body in C# and VB.NET

If you need to compose emails using more advanced features programmatically, you can use Word documents in the email body with your C# and VB.NET applications.

With GemBox.Email you can write emails in EML, MHT, and MSG formats. With the GemBox.Document component you can read documents from formats such as DOC and DOCX.

By combining these components, you can create emails from Word files by using the MHTML format as an intermediate. In other words, you can load a Word file into a DocumentModel object, save it as HtmlType.Mhtml, and then load it as a MailMessageFormat.Mhtml email into MailMessage.

The example below shows how you can send a Word document as an email message from a C# or VB.NET application by converting the DOC or DOCX file into an email body and adding additional content (such as subject, date, sender, and receiver). The generated email retains images, styles, and formatting from the Word template.

Sent email with a body that's generated from Word file in C# and VB.NET
Screenshot of a converted Word document to an email message
using System;
using System.IO;
using GemBox.Document;
using GemBox.Email;
using GemBox.Email.Smtp;

class Program
    static void Main()
        // If using the Professional version, put your GemBox.Email serial key below.

        // If using the Professional version, put your GemBox.Document serial key below.

        // Load a Word file.
        var document = DocumentModel.Load("%#BodyTemplate.docx%");

        using (var stream = new MemoryStream())
            // Save as MHTML document.
            document.Save(stream, new HtmlSaveOptions()
                HtmlType = HtmlType.Mhtml,
                UseContentIdHeaders = true

            // Load MHTML content as a mail message.
            var message = MailMessage.Load(stream, MailMessageFormat.Mhtml);

            message.Subject = "Word message example";
            message.Date = DateTime.Now;

            message.From.Add(new MailAddress(""));
            message.To.Add(new MailAddress(""));

            // Send the email.
            using (var smtp = new SmtpClient("<HOST>"))
                smtp.Authenticate("<USERNAME>", "<PASSWORD>");
Imports System
Imports System.IO
Imports GemBox.Document
Imports GemBox.Email
Imports GemBox.Email.Smtp

Module Program
    Sub Main()

        ' If using the Professional version, put your GemBox.Email serial key below.

        ' If using the Professional version, put your GemBox.Document serial key below.

        ' Load a Word file.
        Dim document = DocumentModel.Load("%#BodyTemplate.docx%")

        Using stream As New MemoryStream()
            ' Save as MHTML document.
            document.Save(stream, New HtmlSaveOptions() With
                .HtmlType = HtmlType.Mhtml,
                .UseContentIdHeaders = True

            ' Load MHTML content as a mail message.
            Dim message = MailMessage.Load(stream, MailMessageFormat.Mhtml)

            message.Subject = "Word message example"
            message.Date = DateTime.Now

            message.From.Add(New MailAddress(""))
            message.To.Add(New MailAddress(""))

            ' Send the email.
            Using smtp As New SmtpClient("<HOST>")
                smtp.Authenticate("<USERNAME>", "<PASSWORD>")
            End Using
        End Using

    End Sub
End Module

See also

Next steps

GemBox.Email is a .NET component that enables you to read, write, receive, and send emails from your .NET applications using one simple API.

Download Buy