Asp.net 无法使用SMTP将电子邮件发送到外部域
我无法向外部域地址发送电子邮件,如“用户”。one@asdf.com'使用下面的代码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
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发送者标头”以开始您的工作——任何希望使用此路由的人。