Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SMTP前弹出_C#_Email_Smtp_Pop3 - Fatal编程技术网

C# SMTP前弹出

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分钟 我问我的老主机提供商我需要做什么来修复这个问题,他们回答说 邮件

最近,我不得不将我的一个web应用程序转移到一个新的托管提供商。邮件和web服务仍然保留在旧的托管站点上,但是,当我尝试从新服务器发送电子邮件时,我收到一个错误

“服务器拒绝了一个或多个收件人地址。服务器响应为:

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驱动器上要好。。