我无法使用以下代码将电子邮件发送到外部域地址,例如'[email protected]'。
SmtpClient smtpClient = new SmtpClient(smtpMailServer);
smtpClient.UseDefaultCredentials = true;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = true;
//Sending mail.
smtpClient.Send(mailMessage);
我有例外-
Mailbox unavailable. The server response was: 5.7.1 Unable to relay for [email protected]
如果我将DeliveryMethod更改为-
smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
我能够在本地计算机上发送电子邮件。但是它在生产站点上失败,但有一个例外-
Cannot get IIS pickup directory
您能建议我做什么吗?
我遇到了这个问题,并进行了身份验证,如下所示:
SmtpClient client = new SmtpClient(EmailServer, 25);
var SmtpUser = new System.Net.NetworkCredential("domain\\username", "password");
client.Credentials = SmtpUser;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
我必须使用双斜杠,因为一个斜杠是转义字符,因此请使用两个斜杠才能起作用。
[如果要在MX记录中查找目标地址(在您的示例中为asdf.com),然后将其用于SmtpClient的host属性,它应该接受未经身份验证的邮件传递因为是本地用户由于System.Net不提供可返回MX记录的托管DNS类,但您可以P /调用非托管代码来执行此操作,因此这并非易事。否则,您将需要确保要连接的任何SMTP服务器都将为您中继,然后将SmtpClient的Credentials属性设置为用于连接到该服务器的适当凭据。将DeliveryMethod设置为PickupDirectoryFromIIS仍然仅将文件写入IIS拾取目录,因此它仅写入文件,而不进行实际发送。
您通常需要使用用户名/密码向外部邮件服务器进行身份验证。当您使用外部服务器时,它将不知道您要传递的凭据。这可能是您的问题。
我遇到了这个问题,我通过在IIS 6.0 Manager / SMTP虚拟服务器/域下添加一个域名为“ * .com”且类型为“ remote”的域来解决。
尽管就我而言,SMTP服务器允许匿名访问。