C# 如何测试正在发送的asp.net电子邮件

C# 如何测试正在发送的asp.net电子邮件,c#,asp.net,unit-testing,C#,Asp.net,Unit Testing,我的asp.net中有一些发送电子邮件的代码: public void SendEmail(string message) { var body = message; var email = new MailMessage(ConfigurationManager.AppSettings["SenderEmail"], ConfigurationManager.AppSettings["RecipientEmail"],

我的asp.net中有一些发送电子邮件的代码:

public void SendEmail(string message)
{
    var body = message;

    var email = new MailMessage(ConfigurationManager.AppSettings["SenderEmail"],
                            ConfigurationManager.AppSettings["RecipientEmail"],
                            "Email Test", body);

    var client = new SmtpClient();
    client.Host = Properties.Settings.Default.smtp;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.Credentials = CredentialCache.DefaultNetworkCredentials;

    client.Send(email);
}
我想知道如何测试这个。无论是单元测试还是集成测试,我都不在乎。我不想嘲笑这件事。我其实想写一个测试,一封电子邮件是否发送了正确的消息


有人能帮我吗?

你不能把它放在一个模块中,通过测试调用它,并设置收件人说你是电子邮件地址吗。如果你收到电子邮件,我会说它正在工作。

给自己发一封电子邮件,看看你是否收到了它


如果您不知道如何执行此操作,您可能希望回到基本操作。

要设置自动测试,您需要在您可以查询的服务器上有一个测试电子邮件地址(因为主题是asp.net,我们假定为exchange server),然后在邮箱中查询您正在使用的电子邮件:

选项1:ExchangeSDK

选项2:通过web请求(如果已启用exchange服务器的http连接器

选项3:编写自己的简单pop3客户端/cli/api


参考选项3:

只需在c:/drive上创建一个名为“maildrop”的文件夹,并在Web.config文件中使用以下内容:

<mailSettings>
    <smtp deliveryMethod='SpecifiedPickupDirectory'>
        <specifiedPickupDirectory pickupDirectoryLocation="c:\maildrop" />
    </smtp>
</mailSettings>

更多信息:


有一种非常简单的方法可以在approvaltests中测试生成的电子邮件。 您需要将该方法分为两个方法,一个用于创建电子邮件,一个用于发送电子邮件。然后您可以调用

EmailApprovals.Verify(mail)
这里有一段视频显示了这个过程:

您可以使用SMTP4Dev

只需安装它(这是一个运行在任务栏中的小程序)。 您的开发程序端不需要任何配置

默认情况下,我认为它只会在未修改代码的情况下在本地主机上侦听代码


当你发送电子邮件时,你会收到一个很好的任务栏弹出通知…只需单击通知查看电子邮件的实际内容!

+1这有一个明显的优点,即你不需要在发布应用程序和测试应用程序之间使用不同的代码。我知道这是一篇旧文章,但有人尝试过与Selen一起使用它吗ium/SeleniumWebDriver?我必须添加一个虚拟的“from”标记才能工作,否则它将引发一个异常,表明我缺少from字段。有关更多详细信息,请参阅。