C# 在asp.net中,如何将电子邮件写入磁盘而不是发送到实际地址?

C# 在asp.net中,如何将电子邮件写入磁盘而不是发送到实际地址?,c#,asp.net,email,C#,Asp.net,Email,如何在磁盘上写入电子邮件(.eml文件),而不是在asp.net中发送到实际地址?提前感谢。我假设您使用的是SmtpClient,因为这是相当标准的 编写自己的SMTP实现(非常简单),将通过它发送的消息写入磁盘,而不是通过电子邮件发送 然后 现在,服务器将截获此发送请求并将其写入磁盘 using (var client = new SmtpClient("somehost")) { client.DeliveryMethod = SmtpDeliveryMethod.Specified

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

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

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

然后

现在,服务器将截获此发送请求并将其写入磁盘

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>

您可以将配置为将电子邮件放入配置的目录中,而不是发送电子邮件。要执行此操作,您需要将设置为
SpecifiedPickupDirectory
,并设置:



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

我绝对建议使用配置文件方法而不是代码方法。在开发过程中,您可能希望将电子邮件写入磁盘,但在部署过程中,您希望将邮件设置转换为使用真正的Smtp服务器。
<configuration>
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
        <specifiedPickupDirectory pickupDirectoryLocation="C:\somedirectory" />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>
<system.net>
    <mailSettings>
        <smtp deliveryMethod="SpecifiedPickupDirectory">
            <specifiedPickupDirectory pickupDirectoryLocation="C:\emails" />
        </smtp>
    </mailSettings>
</system.net>