如何在磁盘上写电子邮件而不是在asp.net中发送到真实地址?

时间:2011-01-16 16:23:29

标签: c# asp.net email

如何在磁盘上写电子邮件(.eml文件)而不是在asp.net中发送到真实地址?提前谢谢。

3 个答案:

答案 0 :(得分:12)

using (var client = new SmtpClient("somehost"))
{
    client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
    client.PickupDirectoryLocation = @"C:\somedirectory";
    client.Send(message);
}

或使用配置文件:

<configuration>
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
        <specifiedPickupDirectory pickupDirectoryLocation="C:\somedirectory" />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

答案 1 :(得分:5)

您可以配置SmtpClient将电子邮件放入已配置的目录中,而不是发送它们。为此,您需要将DeliveryMethod设置为SpecifiedPickupDirectory并设置PickupDirectoryLocation

<system.net>
    <mailSettings>
        <smtp deliveryMethod="SpecifiedPickupDirectory">
            <specifiedPickupDirectory pickupDirectoryLocation="C:\emails" />
        </smtp>
    </mailSettings>
</system.net>

当您使用标准SmtpClient发送电子邮件时,它们现在将保存到指定目录,而不是实际发送。

答案 2 :(得分:0)

我假设您使用的是SmtpClient,因为这是相当标准的。

编写自己的SMTP实现(非常简单),将通过它发送的消息写入磁盘,而不是实际通过电子邮件发送。

然后

// mailMessage is MailMessage
var client = new SmtpClient("address.of.your.smtp.implementation");
client.Send(mailMessage);

现在您的服务器将拦截此发送请求并将其写入磁盘。