SmtpDeliveryMethod.PickupDirectoryFromIis是一种奇怪的行为

时间:2009-08-07 05:29:15

标签: c# iis smtp

我想我需要一些大师灯!

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();

这两行是相同的,因为它将使用LOCAL IIS?!!!

这是真的,以这种方式构建API是不正常的!?这很令人困惑......

由于 乔纳森

2 个答案:

答案 0 :(得分:3)

IIRC,当SmtpClient发送电子邮件时,它会查看.DeliveryMethod值。如果值为Network,则通过网络发送。如果它是PickupDirectoryFromIis,则它忽略任何指定的SMTP服务器(因为它只是写入并将电子邮件发送到文件系统),并将其写入分拣目录。没有网络通信。

答案 1 :(得分:1)

这是Send例程中的一个错误 - 它创建了一个smtp服务器对象,即使未指定一个,当稍后(在Send之后)尝试处理它时,它会抛出异常。

表示邮件成功放入取件目录后会发生这种情况。

解决方法:

  1. 将localhost指定为SMTP服务器。它不会被使用,但会阻止例外。

  2. 围绕Send方法盲目尝试/捕获(BAD解决方案)。