如何使用带有.net的SmtpClient以编程方式将富文本文档作为电子邮件正文发送

时间:2014-08-10 07:50:56

标签: c# .net wpf email smtpclient

我正在编写一个WPF .net应用程序,向几个人发送电子邮件。

我已经让程序正常运行,以便使用以下代码发送纯文本电子邮件:

  private void OnSendEmails(object sender, RoutedEventArgs e)
  {
     using (SmtpClient smtpClient = new SmtpClient("<mySMTPserver>", <somePort>))
     {
        smtpClient.Timeout = 10000;
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtpClient.UseDefaultCredentials = false;
        smtpClient.Credentials = new NetworkCredential("<myusername>", "<mypassword");

        foreach (string address in Addresses)
        {
           try
           {
              Console.Out.WriteLine("Sending e-mail to:  {0}", address);
              smtpClient.Send(Sender, address, Subject, Body);
              Console.Out.WriteLine("Sent e-mail to:  {0}", address);
           }
           catch (Exception ex)
           {
              Console.Out.WriteLine("Exception thrown while sending to :  {0}\r\n\r\n{1}", address, ex);
           }

           Console.Out.WriteLine("Sleeping");
           Thread.Sleep(Seconds * 1000);
           Console.Out.WriteLine("Done Sleeping");
        }
     }
  }

我想发送几封电子邮件给精选的人群来宣传我写的应用程序。但是,我想向他们发送除纯文本之外的其他内容。我可以使用我希望发送的内容填充RichTextBox,但是,我不知道如何发送它,因为SmtpClient只需要一个'字符串'来表示电子邮件的正文。

所以问题是,如何使用.net和SmptClient将RichTextBox.Document作为我的电子邮件正文发送?

文档本身将包含与图标相关联的图像,文本和一些链接。

1 个答案:

答案 0 :(得分:2)

尝试创建MailMessage类型的对象:

var msg = new MailMessage(...);

然后你可以设置这个属性:

msg.IsBodyHtml = true;

并且邮件正文将以HTML格式呈现。

我不完全确定RichTextBox会传递HTML或者可能是稍微不同的RTF,在将内容分配给msg.Body之前,您应该使用帮助方法将RTF转换为HTML。