ASP.Net应用程序之外的MailDefinition

7
我将编写一个C#控制台应用程序,在运行过程中发送电子邮件。我可以通过以下命令简单地发送电子邮件:
     MailMessage message = new MailMessage("foo@foo.com", "bar@bar.com", "Test message", "Test message content");
     message.IsBodyHtml = true;
     message.Body = "<a href=\"http://www.daringfireball.net\">DaringFireball.net</a>";
     SmtpClient client = new SmtpClient("localhost"); // Your host here

     try
     {
        client.Send(message);
     }
     catch (Exception e)
     {
        Console.WriteLine("There was an error trying to send the message: " + e.ToString());
     }

我试图使用MailDefinition来完成这个操作,因为这些电子邮件可能会比较长,但在此过程中,我遇到了一个小问题。CreateMailMessage方法需要一个System.Web.UI.Control,但我没有它,因为我不是ASP.Net应用程序。
有人遇到过这个问题吗?或者找到了更好的解决办法吗?
谢谢

1
MailDefinition 带来了什么 MailMessage 无法实现的功能? - Jim Mischel
2
@JimMischel - MailDefinitionCreateMailMessage 方法提供了一种从文本文件创建电子邮件消息的简洁方式。MailMessage 没有类似的功能。 - Theophilus
2个回答

1

请确保您使用了正确的 .Net Framework 4,而不是 .Net Framework 4 客户端作为目标框架。 将 System.Web 添加到项目的引用中。

然后创建 Mailmessage 如下: MailMessage msgHtml = message.CreateMailMessage(recipients, replacements, new System.Web.UI.Control());


这个解决方案似乎可行:https://dev59.com/61rUa4cB1Zd3GeqPlZzy - russau

0

我不熟悉 MailDefinition 在任何方面都更优越。来自 MSDN 的说法:

"使用 MailDefinition 类简化创建预定义的电子邮件消息,以便由控件发送。如果您想使用控件以外的方式发送电子邮件,请参阅 System.Net.Mail 类。" (源在此)

但是,假设您有充分的理由喜欢 MailDefinition 而不是普通的 MailMessage那么请将 System.Web.dll 的引用添加到您的项目中。 您不必在 IIS 中运行以使用该程序集中的类。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接