C# SMTP前弹出
最近,我不得不将我的一个web应用程序转移到一个新的托管提供商。邮件和web服务仍然保留在旧的托管站点上,但是,当我尝试从新服务器发送电子邮件时,我收到一个错误 “服务器拒绝了一个或多个收件人地址。服务器响应为:C# SMTP前弹出,c#,email,smtp,pop3,C#,Email,Smtp,Pop3,最近,我不得不将我的一个web应用程序转移到一个新的托管提供商。邮件和web服务仍然保留在旧的托管站点上,但是,当我尝试从新服务器发送电子邮件时,我收到一个错误 “服务器拒绝了一个或多个收件人地址。服务器响应为: 450 <email_address>: Recipient address rejected: Greylisted for 5 minutes 450:收件人地址被拒绝:Greylisted持续5分钟 我问我的老主机提供商我需要做什么来修复这个问题,他们回答说 邮件
450 <email_address>: Recipient address rejected: Greylisted for 5 minutes
450:收件人地址被拒绝:Greylisted持续5分钟
我问我的老主机提供商我需要做什么来修复这个问题,他们回答说
邮件服务器以前在POP上运行
SMTP。如果未指定有效的POP登录名
在通过发送邮件之前收到
服务器,然后是邮件
灰色列表并保持5分钟
在重试之前
要防止这种情况发生,只需执行接收
在发送邮件之前
有人知道我如何在C#中SMTP之前执行POP吗?我不确定C#如何处理细节(套接字?),但基本上你只想连接到新的POP服务器。以下是POP事务示例:
$ telnet new-pop-server.com 110
Connected to new-pop-server.com.
Escape character is '^]'.
+OK
USER <username>
+OK
PASS <password>
+OK // you're authenticated at this point
LIST
+OK
. // no new messages!
QUIT
+OK
$telnet new-pop-server.com 110
已连接到new-pop-server.com。
转义字符为“^]”。
+嗯
使用者
+嗯
通过
+好的//此时您已通过身份验证
列表
+嗯
.//没有新消息!
退出
+嗯
一旦您获得授权,您应该能够以编程方式发送邮件。(用户、通过、列表、退出)是您要发送的所有命令()。它们会将您列为灰色,因为您是从新提供商进行连接的,对吗?新提供商难道没有允许从服务器IP范围进行连接的SMTP吗 另一种方法是自己进行MX查找,并直接连接到要向其发送电子邮件的授权SMTP服务器。但是,这也要求您处理灰色列表,即在4xx响应上重试,以获得可靠的传递
也许你应该询问你的提供商是否也提供了auth SMTP作为替代方案,这是另一种可能的失败点,因为在使用SMTP服务之前需要POP登录。我非常确定POP3没有内置到.NET Framework中,所以你需要按照Owen的建议自己实现它,或者寻找现有的POP3 li像这样的争吵
最好是说服你的新主机提供商放松灰色列表规则。我成功地为此编写了代码。我愿意分享解决方案(如果有人感兴趣的话?)但不确定如何最好地将代码放在Stackoverflow上?大约有50行代码。正如我建议的那样,我将代码添加到了我的博客中。这不是有史以来发布的最好的博客,但是,有人可能会发现它很有用。。。
您已经有了要查找的代码,但是如果我可以补充一下我的想法:就像其他人已经建议的那样,我会向旧的提供商询问他们是否为AUTH提供SMTP。对我来说,他们说的是,“只有当您来自同一IP范围/子网,或者如果您已经对自己进行了身份验证,才可以使用SMTP“。许多ISP都使用SMTP服务器执行此操作。如果通过特定ISP连接,则可以使用SMTP,而无需显式提供任何身份验证凭据。如果您切换到另一个ISP并希望使用旧ISP的SMTP,则必须显式地通过SMTP服务器进行身份验证。Jishi,是的,灰色列表是因为我正在尝试从新提供商连接到旧提供商,我的邮件和web服务就在那里。不确定我的新提供商是否允许从服务器IP ranger进行连接。我学到的一件事是,使用共享主机比它的价值更麻烦。如果你觉得其他人可能想使用它,也许可以在你的博客上链接它?好主意Owen。。谢谢,我会的。。不确定其他人是否愿意使用它,但它比卡在我的D驱动器上要好。。