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

时间:2010-09-14 03:25:34

标签: 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"],
                            "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 个答案:

答案 0 :(得分:13)

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

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

更多信息:

http://weblogs.asp.net/gunnarpeipman/archive/2010/05/27/asp-net-using-pickup-directory-for-outgoing-e-mails.aspx

答案 1 :(得分:2)

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

如果你不知道该怎么做,你可能想回到基础。

答案 2 :(得分:1)

答案 3 :(得分:0)

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

答案 4 :(得分:0)

要设置自动化测试,你想要在你可以查询的服务器上有一个测试电子邮件地址(因为主题是asp.net,我们假设是交换服务器),然后在邮箱中查询你所用的电子邮件寻找使用:

选择1:交换sdk

选择2:通过网络请求(如果启用了交换服务器的http连接器

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

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

答案 5 :(得分:0)

有一种非常简单的方法可以在审批测试中测试生成的电子邮件。 您需要将方法分为两种方法,一种是创建电子邮件,另一种是发送电子邮件。然后你可以打电话。

EmailApprovals.Verify(mail)

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

答案 6 :(得分:0)

您可以使用SMTP4Dev

http://smtp4dev.codeplex.com/

只需安装它(它是在您的任务栏中运行的一个小程序)。 开发程序结束时无需配置......

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

发送电子邮件时,您会收到一个很棒的任务栏弹出通知...只需点击通知即可查看电子邮件的实际内容!