Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Asp.net 无法使用SMTP将电子邮件发送到外部域_Asp.net_Email_Smtpclient - Fatal编程技术网

Asp.net 无法使用SMTP将电子邮件发送到外部域

Asp.net 无法使用SMTP将电子邮件发送到外部域,asp.net,email,smtpclient,Asp.net,Email,Smtpclient,我无法向外部域地址发送电子邮件,如“用户”。one@asdf.com'使用下面的代码 SmtpClient smtpClient = new SmtpClient(smtpMailServer); smtpClient.UseDefaultCredentials = true; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.EnableSsl = true; //Sending mail. smtpClie

我无法向外部域地址发送电子邮件,如“用户”。one@asdf.com'使用下面的代码

SmtpClient smtpClient = new SmtpClient(smtpMailServer);
smtpClient.UseDefaultCredentials = true;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = true;

//Sending mail.
smtpClient.Send(mailMessage);
我有个例外-

邮箱不可用。服务器响应为:5.7.1无法为进行中继xxx@example.com

如果我将DeliveryMethod更改为-

smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
我可以在本地机器上发送电子邮件。但在生产现场出现故障,但以下情况除外:

无法获取IIS分拣目录


您能建议我怎么做吗?

您通常需要使用用户名/密码与外部邮件服务器进行身份验证。当您使用外部服务器时,它将不知道您正在传递的凭据。这可能是你的问题

如果要查找目标地址的MX记录(在您的示例中,它是asdf.com),然后将其用于SmtpClient的主机属性,则它应该接受消息,以便在不进行身份验证的情况下进行传递,因为它是发送给本地用户的。这并不容易做到,因为System.Net不提供可返回MX记录的托管DNS类,但您可以P/调用非托管代码来实现这一点。否则,您需要确保连接到的任何SMTP服务器都将为您中继,然后将SmtpClient的凭据属性设置为连接到该服务器的相应凭据。将DeliveryMethod设置为PickupDirectoryFromIIS仍然只将文件写入IIS拾取目录,因此它只是写入文件,而不是执行实际的发送

我遇到了这个问题,并通过身份验证解决了它,请参见以下内容:

SmtpClient=新的SmtpClient(EmailServer,25);
var SmtpUser=new System.Net.NetworkCredential(“域\\用户名”,“密码”);
client.Credentials=SmtpUser;
client.DeliveryMethod=SmtpDeliveryMethod.Network;

我必须使用双斜杠,因为一个斜杠是转义字符,所以使用两个斜杠才能工作。

我遇到了这个问题,通过在IIS 6.0管理器/SMTP虚拟服务器/域下添加一个域名“*.com”并键入“remote”,我解决了这个问题


虽然在我的例子中,SMTP服务器允许匿名访问。

+1了解电子邮件的工作原理。另外,请记住,除了直接发送到该域的服务器(MX查找)之外,还需要做其他事情。主要是由于反垃圾邮件保护,电子邮件世界中有很多规则。搜索“发送者ID”、“SPF”和“SMTP发送者标头”以开始您的工作——任何希望使用此路由的人。