0

我有以下代码,我正在尝试发送电子邮件。我正在使用另一台服务器作为 SMPTClient。

MailMessage message = new MailMessage();
message.To.Add(toEmailId);
message.Subject = "test Subject";
message.From = new System.Net.Mail.MailAddress("myid@xyz.com");
message.Body = "This is a system generated email. Please do not reply";
SmtpClient smtp = new SmtpClient("anotherservername"); 
smtp.Send(message);

在调试时,我在最后一行得到错误。错误是:

An attempt was made to access a socket in a way forbidden by its access permissions SERVER IP :25 

我从互联网上发现我的防火墙可能阻止我访问该服务器的端口,或者是否有任何我错过的设置、配置。显然,部署在该服务器上的应用程序能够发送电子邮件。我还在建造一个来测试。

4

1 回答 1

0

某些服务器通过在连接到 SMTP 之前检查您是否已连接到 POP 服务器来执行身份验证和授权。您应该先尝试使用 POP 连接和验证,然后再连接到 SMTP。

从历史上看,电子邮件客户端首先检查然后在 Send&Receive 例程中发送电子邮件,因此这被用作差人授权。查看有关SMTP before POP的维基百科文章


对某些人来说造成这种情况的另一个问题是如何将服务器地址提供给SmtpClient. 您应该使用明确提供端口号的构造函数,而不是将其附加到 IP/主机名。IE

代替 new SmtpClient("123.123.123.123:25")

利用 new SmtpClient("123.123.123.123", 25)

于 2012-11-16T17:01:54.150 回答