2010-11-11 53 views
6

当试图在.NET的网站发送了一封电子邮件,正在遇到以下错误:邮箱不可错误

Mailbox unavailable. The server response was: No such user here 

这个错误出现,如果代码试图发送给其没有按电子邮件地址不存在?

谢谢。

我现在有更多关于这个错误的信息。电子邮件是从'noreply @ [domain]'发送的。当电子邮件发送到同一个域的电子邮件地址时,电子邮件将毫无问题地发送。此错误仅在发送到的电子邮件地址不在同一个域中时才会显示。我不知道这是否有用?

回答

0

我不知道确切的问题,但我发现这个问题是事端:如何与后台代码访问g与服务器迁移有关。问题现在已经解决了!

1

这听起来像一个SMTP问题

尝试设置您的SMTP服务器信息在web.config文件中是这样的:

<system.net> 
     <mailSettings> 
      <smtp deliveryMethod="Network"> 
       <network defaultCredentials="false" host="mail.blah.com" password="xxxx" port="25" userName="[email protected]"/> 
      </smtp> 
     </mailSettings> 
</system.net> 

这是一个体面的文章,详细web.config中的这一部分,并

http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2008/09/06/accessing-web-config-file-smtp-mail-settings-programmatically.aspx

+1

感谢您的答复 - 我不能确定这是否会成为问题的网站,该错误已出现至少2年,并且在发送电子邮件之前,他们从未收到过此错误消息。这个错误信息是否有其他原因? – Leah 2010-11-12 09:11:28

9

当你用你的NetworkCredentials指定一个域时会发生这种情况。如果您指定一个域(第三个参数),那么您只能发送到该域内的有效邮箱。离开它可以发送到域外的任何地址。

var client = new SmtpClient("smtp.server.com"); 
client.UseDefaultCredentials = false; 

// The following will be able to send to anyone outside the domain. 
client.Credentials = new NetworkCredential("user", "password"); 

// The following will only work when sending to users on server.com 
client.Credentials = new NetworkCredential("user", "password", "server.com"); 
+0

还是这个东西不起作用 – 2016-04-22 06:53:21

3

当您从2.0平台切换到4.0时可能会发生这种情况。正如这里所解释的,您需要明确告诉IIS您没有使用默认凭证和域。在web.config中使用以下语法:

<network host="mail.younameit.com" port="25" 
userName="[email protected]" password="youchoose" 
defaultCredentials="false" clientDomain=""/> 

最后两个参数对于解决此问题最为重要。

5

可能是因为你的密码不正确。我必须重置邮件服务器上的密码,然后错误消失。

+0

对我来说就是这样。为什么我们不会收到“无效凭证”或“授权失败”之类的内容?看到“没有这样的用户”和收件人的电子邮件地址真的令人困惑。 – 2016-02-14 08:30:43

+0

我有同样的问题...并通过更改密码解决 – Ratul 2018-02-05 12:54:03

1

在类似的情况下,这个Q/A对我很有用。对我们来说,关键的事实是错误只发生在不同域上的电子邮件地址。我了解到我们的新网站主机/邮件服务器设置是有意配置的。 (之前的一个托管公司没有。)应用程序代码或Web.config设置的某些组合可能已经解决了我们的问题,但最直接的方法是在我们的域中创建一个无回复的帐户,这样现在[email protected]是有效的,并且允许发送到外部地址。

不需要修改代码或Web.config。后者仅呼叫“from”和“host”,并且在我们的托管环境中不需要证书。 (当我们覆盖“从”的名义,我们需要重写它是一些其他的地址是有效的对我们的域名