如何测试ASP.NET邮件是否已发送

6

我在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);
}

我想知道如何测试这个。无论是单元测试还是集成测试,我真的不在乎。我不想模拟它。实际上,我想编写一个测试,以确保发送了一封带有正确消息的电子邮件。

有人能帮我吗?

7个回答

13

1
+1 这有明显的优势,即您不需要在发布应用程序和测试应用程序之间使用不同的代码。 - Brian
我知道这是一个旧的帖子,但有人尝试过与Selenium / SeleniumWebDriver一起使用吗? - khorvat
1
我不得不添加一个虚拟的“from”标签才能使其工作,否则它会引发异常,指出我缺少了“from”字段。更多详情请参见这里 - julealgon

2

给自己发送一封电子邮件并查看是否收到了?

如果您不知道如何操作,可能需要回到基础知识。



0

你不能把这个放在一个模块里,然后从测试中调用它并将收件人设置为你的电子邮件地址吗?如果你收到了邮件,那我会说它是有效的。


0

为了设置自动化测试,您需要在可以查询的服务器上拥有一个测试电子邮件地址(由于主题是asp.net,我们将假设为Exchange服务器),然后使用以下方式查询电子邮件邮箱中正在查找的电子邮件:

选项1:Exchange SDK

选项2:通过Web请求(如果启用了Exchange服务器的HTTP连接器)

选项3:编写自己的简单POP3客户端/CLI/API

选项3的参考:http://www.codeproject.com/KB/IP/popapp.aspx


0

您可以使用SMTP4Dev

http://smtp4dev.codeplex.com/

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

默认情况下,我认为它将与您的代码未经修改一起正常工作,因为它侦听本地主机。

当您发送电子邮件时,您将收到一个漂亮的任务栏弹出通知...只需单击通知即可查看电子邮件的实际内容!


0

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

EmailApprovals.Verify(mail)

这里有一个视频展示整个过程:http://www.youtube.com/watch?v=Sf16dPq2n3w

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