3

我正在尝试使用 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
4

5 回答 5

1

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

于 2009-01-20T12:01:17.447 回答
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 服务器进行身份验证,并且他们对 POP3/IMAP 和 SMTP 使用相同的 uid/pwd,因为这是最常见的。您的情况可能会有所不同 - 检查您的电子邮件程序中的电子邮件设置。

于 2009-05-24T22:12:28.937 回答
0

检查您的事件查看器,然后您将看到类似这样的内容

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

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

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

于 2009-04-11T09:20:50.713 回答
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 发送电子邮件,但它可能是从您的本地网络分配的 IP 发送的。为确保一切正常,您可能需要将中继限制中的单选按钮选择为“除以下列表之外的所有”并清除该列表。这将打开继电器以测试您的配置。一旦你弄清楚你的问题是什么,你应该限制这一点。

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

于 2009-01-16T20:15:53.777 回答
0

如果代码没有返回异常,那么那里不太可能有任何异常。如果您查看原始 .EML 文件,请检查那里并寻找任何不合适的地方。

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

于 2009-01-19T12:07:03.207 回答