如何在开发机器上测试从asp.net发送电子邮件?

时间:2010-10-22 15:36:30

标签: asp.net-mvc email

我如何做到这一点? SMTP类在dev计算机上抛出有关未找到SMTP服务器的错误。有没有办法测试在开发机器上发送电子邮件?

7 个答案:

答案 0 :(得分:15)

肖恩,

直接从我的web.config:

  <smtp deliveryMethod="SpecifiedPickupDirectory">
    <network host="ignored" />
    <specifiedPickupDirectory pickupDirectoryLocation="c:\email_c#" />
  </smtp>

这样可以正常查看保存在 pickupDirectoryLocation 目录中的“电子邮件”。

试一试......

答案 1 :(得分:5)

您可以configuring System.Net.Mail.SmtpClient将文件转储到磁盘上以使用SpecifiedPickupDirectory类型的deliveryMethod,我找到了an example on SO

答案 2 :(得分:3)

我知道这是一个老线程,但我偶然发现了这项服务: http://mailtrap.io/

哪个是辉煌的。它作为您的应用程序的虚拟SMTP服务器,并不实际发送电子邮件,但允许您在浏览器中(或通过API)轻松查看它们。

这是杀手锏。

答案 3 :(得分:2)

这有几个可能的原因。
1)您的代码是否配置为在开发期间使用本地SMTP服务器并且您已升级到Windows 7?您的localhost上不再有可用的SMTP服务器。查找并下载smtp4dev以允许您的localhost捕获已发送的电子邮件。
2)如果您使用的是远程SMTP服务器,请检查Windows防火墙以确认您是否可以发送外发邮件。如果是,请确认您的计算机/用户名有权通过该服务器发送邮件。快速telnet:25到服务器应该让你知道你的连接是否被拒绝。

答案 4 :(得分:2)

假设“测试发送电子邮件”是指发送测试电子邮件而不是正式/单元测试,我喜欢使用smtp4dev: http://smtp4dev.codeplex.com/

正如页面所解释的那样,它是一个虚拟的SMTP服务器,基本上拦截了你的应用程序的外发消息,允许你检查这些消息并确保一切正常。它是一个Windows应用程序,如果您正在为ASP.NET开发,这可能不是问题。

答案 5 :(得分:0)

我通常是通过为SmtpClient创建一个包装类,然后在我的测试中模拟包装器来实现的。这将从我的单元测试中删除实际的邮件客户端/服务器依赖项。包装器本身相对较薄,所以我觉得不需要为它创建测试。通常我会对我这样的事情进行集成级别测试,作为我的暂存环境中的探索性测试。登台环境通常使用生产邮件服务器,但使用“假”数据 - 例如,客户电子邮件地址替换为我自己的。

话虽如此,我希望客户端即使在您的开发系统上也能正常工作,除非您的邮件服务器受到防火墙的保护,或者会阻止您的开发系统与之交谈。您能否详细说明您遇到的错误?

答案 6 :(得分:0)

如果没有看到异常,我们就无能为力。只要您的开发机器上的详细信息指向正确的smtp服务器并拥有正确的凭据,那么您的代码将不会成为问题,您应该向下看。我有一个例外的目标机器拒绝请求,尽管其他一切都是正确的。花了很多年的时间来检查凭证,从我们的服务器等发送后,我将这个错误跟踪到McAfee阻止电子邮件端口25 ......