MailMessage - auto-generate Plain Text version from HTML version?

Last post 04-22-2009 7:13 AM by BenCrum. 2 replies.

Sort Posts:

  • MailMessage - auto-generate Plain Text version from HTML version?

    04-23-2008, 5:59 AM
    • Member
      point Member
    • BenCrum
    • Member since 04-23-2008, 5:00 AM
    • UK
    • Posts 3

    Hi

    I'm working on a system that creates emails using the System.Net.Mail MailMessage class and want to know if there's a way to have it automatically create the Plain Text version of an email from the HTML version.

    I've previously used CDO's Message class which would do this for you like so (example taken from MSDN):

    Dim iMsg As New CDO.Message
    Dim strHTML As String
    strHTML = "<HTML><h1>Hello There</h1></HTML>"
    Set iMsg = New CDO.Message
    With iMsg
    .To = "Somebody@example.com"
    .From = "another@example.com"
    .Subject = "Sample multipart/alternative message"
    .HTMLBody = strHTML ' .TextBody gets generated automatically
    .Send
    End With
    This happens when the AutoGenerateTextBody property of a CDO.Message is set to True (the default).
    Is there a property of the MailMessage class that does this?  Or is there another way .NET can convert HTML code to Plain Text?
    Thanks!
    Ben 
  • Re: MailMessage - auto-generate Plain Text version from HTML version?

    05-14-2008, 8:56 AM
    • Member
      point Member
    • BenCrum
    • Member since 04-23-2008, 5:00 AM
    • UK
    • Posts 3

    Nobody got any ideas..?  :o(

  • Re: MailMessage - auto-generate Plain Text version from HTML version?

    04-22-2009, 7:13 AM
    Answer
    • Member
      point Member
    • BenCrum
    • Member since 04-23-2008, 5:00 AM
    • UK
    • Posts 3

    In case anyone else needs a solution, I now have one: stick with CDO and use .NET's COM Interop.

    Here's what I've done:

    1) Added a Reference to my ClassLibrary Project for "Microsoft CDO for Windows 2000 Library" (cdosys.dll).

    2) Created this method:

            public static string ConvertHtmlToPlainTextUsingCdoMessage(string htmlContent)
            {
                string plainTextContent = String.Empty;


                CDO.Message message = new CDO.MessageClass();
                message.AutoGenerateTextBody = true;
                message.HTMLBody = htmlContent;

                if (String.IsNullOrEmpty(message.TextBody))
                {
                    throw new Exception("ConvertHtmlToPlainTextUsingCdoMessage: TextBody is empty.");
                }

                plainTextContent = message.TextBody;

                // Tidy up this unmanagaged thing we've created.
                message = null;

                return plainTextContent;
            }

     

    Magic.  :o)

    Hopefully this isn't a really bad idea, but it seems to perform well.

Page 1 of 1 (3 items)