如何正确设置IIS5的SMTP服务以从我的开发环境发送电子邮件?

时间:2009-01-16 18:52:23

标签: asp.net smtp iis-5

我正在尝试使用SmtpClient类从ASP.NET Web应用程序发送电子邮件。到目前为止,我已授予对127.0.0.1的中继访问权限。我正在尝试将测试电子邮件发送到我的Gmail帐户。 EML文件卡在mailroot的队列文件夹中。我的WinXP防火墙已禁用。我在代码中没有任何例外,但电子邮件永远不会传递到目标地址。我还尝试了其他电子邮件帐户。

        SmtpClient client = new SmtpClient();
        client.Host = "127.0.0.1";

        MailMessage message = new MailMessage();
        message.To.Add("myemail@gmail.com");
        message.From = "name@domain.com";
        message.Subject = subject;
        message.IsBodyHtml = false;
        message.Body = body;

        client.Send(message);

以下是IIS SMTP日志的摘录。

Software: Microsoft Internet Information Services 5.1
Version: 1.0
Date: 2009-01-16 18:28:28
Fields: time c-ip cs-method cs-uri-stem sc-status 
18:28:28 127.0.0.1 EHLO - 250
18:28:28 127.0.0.1 MAIL - 250
18:28:28 127.0.0.1 RCPT - 250
18:28:28 127.0.0.1 DATA - 250
18:29:45 127.0.0.1 MAIL - 250
18:29:45 127.0.0.1 RCPT - 250
18:29:45 127.0.0.1 DATA - 250
18:30:37 127.0.0.1 QUIT - 0

5 个答案:

答案 0 :(得分:1)

根据网络的设置方式,您可能需要告知IIS将电子邮件传递到Exchange服务器以传递到外部世界。要做到这一点:
1.右键单击IIS MMC管理单元中的“默认SMTP虚拟服务器”节点,然后打开“属性”对话框 2.转到“传递”选项卡,然后单击选项卡底部的“高级”按钮 3.在“智能主机”框中,输入Exchange服务器的名称。 (或者相同的DNS条目,例如smtp.mydomain.com)

答案 1 :(得分:1)

我刚刚遇到同样的问题,我想我知道为什么 - 以及解决方案。

问题以及如何测试
首先,我检查了我可以通过端口25进行连接。例如,通过在命令提示符中打开telnet并输入来轻松完成(小圆圈是自己的字母O,而不是符号:));

 o auth.smtp.1and1.co.uk 25

如果连接(而不是给你一个错误)那么它端口25的防火墙问题。如果它确实给你一个错误,那么首先检查你的防火墙设置,直到它工作。

接下来,我启用了SMTP服务的登录,并勾选了所有扩展属性。然后,这在日志文件中给了我两个URL。在我的情况下,他们是 http://www.spamhaus.org/query/bl?ip=217.44.248.144
http://www.sorbs.net/lookup.shtml?217.44.248.144

在这些链接之后,它基本上变得很清楚,那里的人(我猜接收服务器)正在检查并看到我从动态IP地址发送(我只是通过ADSL在家中这样做)并因此阻止它垃圾邮件。

解决方案
您需要将SMTP服务器配置为通过ISP的SMTP服务器进行中继 1.转到SMTP服务的属性,然后转到交付 - >高级
2.将ISP的SMTP服务器名称放在“智能主机”字段中(例如auth.smtp.1and1.co.uk)
3.保存 4.返回“传递”选项卡,单击“出站安全性”选项卡 5.单击“基本身份验证”并指定用于访问电子邮件的用户名和密码。

请注意;我假设您必须对您的ISP SMTP服务器进行身份验证,并且他们使用相同的uid / pwd用于POP3 / IMAP和SMTP,因为这是最常见的。您的情况可能会有所不同 - 请在电子邮件程序中查看您的电子邮件设置。

答案 2 :(得分:0)

我还在测试这个Jim,我注意到的一件事是你没有正确设置你的地址。 From接受MailAddress类而不是字符串。

变化:

message.From = "name@domain.com";

要:

message.From = new MailAddress("name@domain.com");

在默认SMTP设置下:

“IP地址:”下拉列表是设置为127.0.0.1还是(全部未分配)?如果可能,将其设置为“全部未分配”。 尝试添加绑定到您的计算机的IP地址,以便能够通过SMTP服务进行中继。虽然您向主机127.0.0.1发送电子邮件,但它可能是从您指定的本地网络发送的。要确保内容正常工作,您可能需要在“中继限制”中选择“除下面列表以外的所有内容”中的单选按钮并清除列表。这将打开继电器以测试您的配置。一旦弄清楚问题所在,就应该限制这一点。

SMTP日志中是否列出了任何错误代码?

答案 3 :(得分:0)

如果代码没有返回任何异常,则它不可能是那里的任何东西。 如果您查看原始.EML文件,请检查并查找不合适的内容。

然而,最可能的问题是给IIS一个“iisreset”。这样做,你可能会看到消息开始发送。在重新启动之前,SMTP服务器上的配置更改并不总是起作用。

答案 4 :(得分:0)

检查您的活动查看器,然后您会看到类似这样的内容

向远程域“yahoo.com”发送邮件失败的原因如下:发生SMTP协议错误。

有关详细信息,请参阅http://go.microsoft.com/fwlink/events.asp上的“帮助和支持中心”。

(这是我的)。我认为雅虎必须有某种协议吗?或者我们设置了错误的协议?仍在计算..给我发电子邮件,请发送电子邮件至jokenjp@yahoo.com(有一个很好的主题,所以我不认为是垃圾邮件)