C# SmtpDeliveryMethod.PickupDirectoryFromIis奇怪的行为
我想我需要一些古鲁灯C# SmtpDeliveryMethod.PickupDirectoryFromIis奇怪的行为,c#,iis,smtp,C#,Iis,Smtp,我想我需要一些古鲁灯 public void SendEndingMail(string fileName) { SmtpClient client; client = new SmtpClient("smtp.myserver.com", 25); //client = new SmtpClient(); if (!string.IsNullOrEmpty(""))
public void SendEndingMail(string fileName)
{
SmtpClient client;
client = new SmtpClient("smtp.myserver.com", 25);
//client = new SmtpClient();
if (!string.IsNullOrEmpty(""))
{
System.Net.NetworkCredential credential = new NetworkCredential("", "");
client.Credentials = credential;
}
client.UseDefaultCredentials = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
//client.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
MailAddress fromAddress = new MailAddress("mailing@mydom.com", "Elec");
MailAddress toAdrress = new MailAddress("mailing@mydom.com");
using (System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage(fromAddress, toAdrress))
{
mailMessage.Attachments.Add(new System.Net.Mail.Attachment(fileName));
mailMessage.IsBodyHtml = false;
mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
try
{
client.Send(mailMessage);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}
是真的吗
当我设定
client.DeliveryMethod=SmtpDeliveryMethod.PickupDirectoryFromIis;
无论我使用哪个smtp服务器都没有关系
client = new SmtpClient("smtp.myserver.com", 25);
//client = new SmtpClient();
这两行是相同的,因为它将使用本地IIS
这是真的吗?API以这种方式构建是不正常的!?这是非常令人困惑的
谢谢
JonathanIIRC,当SmtpClient发送电子邮件时,它会查看.DeliveryMethod值。如果值为网络,则通过网络发送。如果它是PickupDirectoryFromIis,那么它会忽略任何指定的SMTP服务器(因为它只是将电子邮件写入文件系统),并将其写入Pickup目录。没有网络通信发生。IIRC,当SmtpClient发送电子邮件时,它会查看.DeliveryMethod值。如果值为网络,则通过网络发送。如果它是PickupDirectoryFromIis,那么它会忽略任何指定的SMTP服务器(因为它只是将电子邮件写入文件系统),并将其写入Pickup目录。没有发生网络通信。这是发送例程中的一个错误-即使未指定smtp服务器对象,它也会创建一个smtp服务器对象,并且当它稍后(发送后)尝试处理它时,会引发异常。这发生在邮件成功放置在分拣目录后,因此邮件将被发送 解决办法:
这是发送例程中的一个错误-即使未指定smtp服务器对象,它也会创建一个smtp服务器对象,并且当它稍后(在发送之后)尝试处理它时,会抛出一个异常。这发生在邮件成功放置在分拣目录后,因此邮件将被发送 解决办法:
谢谢戴夫,但我不明白最后一句话“并将其写入收件目录。没有网络通信。”魔法在哪里?它必须通过smtp服务器发送?您好,SmtpClient将直接将电子邮件写入收件目录。一旦它被写入,IIS SMTP服务将通过,分析邮件,如果它被接受,它将被移动到队列目录。从那里,消息被发送到智能主机或收件人的邮件服务器。干杯davei当我说“从那里”,我的意思是IIS SMTP服务将尝试删除邮件。如果邮件无法传递,它将留在队列中,等待可能的传递重试。或者,如果传递完全失败,它将被移动到死信目录--DaveSo为什么microsoft允许在用户设置拾取选项时不使用smtp服务器的情况下在smtpclient的创建中放置smtp服务器…谢谢Dave,但我不理解最后一句话“并将其写入拾取目录。不会发生网络通信”。魔力何在?它必须通过smtp服务器发送?您好,SmtpClient将直接将电子邮件写入收件目录。一旦它被写入,IIS SMTP服务将通过,分析邮件,如果它被接受,它将被移动到队列目录。从那里,消息被发送到智能主机或收件人的邮件服务器。干杯davei当我说“从那里”,我的意思是IIS SMTP服务将尝试删除邮件。如果邮件无法传递,它将留在队列中,等待可能的传递重试。或者,如果传递完全失败,它将被移动到死信目录--DaveSo为什么在用户设置拾取选项时,如果不使用smtpclient,microsoft允许在smtpclient的创建中放置smtp服务器。。。。