如果我排队了一些通过System.Net.Mail.SMTPClent发送的电子邮件,我在哪里可以找到这封邮件?使用Windows SMTP客户端,它位于C:\ inetpub \ mailroot文件夹中 - 是否有类似的.NET客户端文件夹?
编辑:这是一个例子。如果我在我的XP计算机上关闭外发SMTP服务器,然后运行发送十几封电子邮件的应用程序,它们会在某处排队,因为.NET SMTPClient.Send调用成功。几个小时后,我启动了本地SMTP服务器,邮件突然停止了。在此期间它在哪里?虽然我没有本地SMTP服务器,但我的Vista桌面上会出现同样的行为 - 我可以通过阻止防火墙上的端口25来复制功能,然后将队列邮件发送到某个地方。在哪里?这个问题的原因是我想在我拥有的服务器上重新启用SMTP服务,但我不知道在此期间排队了什么,我想确保队列是干净的我重新启用了该服务。这样,客户就不会突然收到真正的旧排队电子邮件。
编辑:显然,我不知道我在说什么。当我在Vista上这样做时:
Dim mm As New System.Net.Mail.MailMessage("me@me.com", "you@you.com", "Testing", "this is a test")
Dim s As New System.Net.Mail.SmtpClient("localhost")
s.DeliveryMethod = Mail.SmtpDeliveryMethod.PickupDirectoryFromIis
s.Send(mm)
我收到异常,因为我没有IIS提取文件夹。将其更改为“Mail.SmtpDeliveryMethod.Network”会导致立即异常,因为我没有运行SMTP服务器。我将在服务器2003上测试它,但我可以发誓这些都在过去工作。如果需要,我会做更多测试并修改问题。
答案 0 :(得分:4)
从SmtpClient的MSDN页面看起来,它是可配置的。您可以使用DeliveryMethod属性来决定是否立即发送邮件,是否将其排入IIS提取文件夹(可能是C:\ inetpub \ mailroot),或者是否将其放在您选择的文件夹中(由{指定) {3}}属性)。
答案 1 :(得分:2)
描述有点模糊,但是如果你打电话给Send()
并且你的DeliveryMethod
是Network
并且调用成功,那么它就不再是.NET领域了。 Something 接受了它的交付,它坐在那个队列中,当你打开可以与外界连接的邮件服务器时,它会跳起来。当DeliveryMethod
为Network
时,我非常确定(至少从Reflector反汇编判断)它是直接在网络流上涂鸦而不是通过某个中间临时文件。如果它无法打开连接并获取该流,那么它会以异常呕吐。这与我在使用这门课程时的实际经验相吻合。希望有所帮助。
答案 2 :(得分:1)
默认情况下,SMTP客户端使用网络发送。因此,任何地方都不会存储任何电子邮件。
以下是web.config的配置部分
<mailSettings>
<!--
<smtp
deliveryMethod = "Network" [Network | SpecifiedPickupDirectory | PickupDirectoryFromIis]
from = "" [String]
>
<network
defaultCredentials = "false" [true|false]
host = "" [String]
password = "" [String]
port = "25" [number]
userName = "" [String]
/>
<specifiedPickupDirectory
pickupDirectoryLocation = "" [String]
/>
</smtp>
-->
<smtp deliveryMethod="Network">
<network defaultCredentials="false" port="25" />
</smtp>
</mailSettings>
您可以查看代码项目中的this article,其中显示了在DeliveryMethod == SmtpDeliveryMethod.SpecifiedPickupDirectory
时如何手动处理SMTP客户端创建的文件。
答案 3 :(得分:1)
您可以设置指定的取件目录和交付方式以获得更好的控制
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="c:\Temp\" />
</smtp>
</mailSettings>
</sysetm.net>
答案 4 :(得分:0)
我习惯的.NET SMTP客户端不会在任何地方存储邮件。它只是发送。如果它应该发送的出站服务器已关闭,它会立即发出异常。
您尝试在XP机上打开和关闭出站服务器。大。现在,尝试查找入站SMTP服务。入站和出站SMTP服务通过filedrop相互通信。