2012-01-16 43 views
0

我创建从服务器的IP,而不是SMTP发送电子邮件地址的电子邮件客户端,我写的代码:SMTP:错误中继

SmtpClient server = new SmtpClient("50.23.128.66"); 
MailMessage msg = new MailMessage("[email protected]", "[email protected]", "subject", "body"); 
server.Send(msg); 

但是当我运行它,我得到这个错误:

Unhandled Exception: System.Net.Mail.SmtpFailedRecipientException: Mailbox unavailable. The server response was: 5.7.1 Relaying Denied. at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressColl ection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)

*顺便说一句,我使用的Windows Server 2008 * 和我配置的SMTP服务器localhost和端口25,但我不`吨知道的是,依赖错误。

+0

当您通过“bar.com”SMTP服务器发送“someone @ foo.com”电子邮件时,您使用'bar.com'服务器作为邮件中继。如果bar.com服务器未配置为中继邮件,它将拒绝不属于其自己域或其用户的SMTP尝试。换句话说,这不是一个编程错误,而是一个服务器错误,你应该检查服务器配置。也许更适合于serverfault.com。 – 2012-01-16 18:59:43

回答

1

中继是SMTP服务器用于验证它应该路由来自特定发件人的电子邮件的方法。 “开放中继”意味着没有认证,并且SMTP服务器将发送任何人发送的电子邮件。这不是一种好的做法,并且可能会在此特定SMTP服务器上进行身份验证,例如用户名和密码,甚至发件人的IP地址。请咨询SMTP服务器的管理员以了解需要什么。我想至少你需要设置用户名和密码,而你在代码示例中没有这样做。

3

如果您使用localhost来依赖电子邮件,则应该使用127.0.0.1或localhost,而不是您在代码中发布的ip地址。

+0

是的,但我有3 ips在该服务器上,我想在发送电子邮件时切换ips,这样我就不会成为垃圾邮件发送者 – 2012-01-16 19:08:24

+2

谁说,通过切换ips你不会被标记为垃圾邮件发送者?比这更复杂。 – Icarus 2012-01-16 19:12:49