如何在磁盘上写电子邮件(.eml文件)而不是在asp.net中发送到真实地址?提前谢谢。
答案 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);
现在您的服务器将拦截此发送请求并将其写入磁盘。