通过SMTP从内部电子邮件地址发送电子邮件 - 邮箱不可用或不在本地(.NET 4)

时间:2011-01-26 08:59:44

标签: c# .net smtp smtpclient

我的问题是我无法发送从我服务器上托管的收件人发送的SMTP电子邮件。我有联系表格,可以将收件人作为外部电子邮件地址用于电子邮件,但现在我要求我的一个系统从同一服务器上托管的域发送电子邮件到任何其他提供的电子邮件(订阅者),它只是给了我错误:

  

发送电子邮件时出错:邮箱   不可用。服务器响应是:   未采取请求的操作:邮箱   不可用或不是本地的

我在 IIS7 Windows服务器上运行 mailEnable ,并想知道是否有人遇到此问题?我通过outlook使用上面的详细信息测试了邮箱,它发送/接收电子邮件很好。下面是一个代码示例,显示了我正在使用的内容,据我所知,它应该是正确的身份验证。我也尝试将配置设置移回C#代码并遇到同样的问题。

示例web.config:

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" from="test@test.com">
            <network defaultCredentials="true" host="mail.test.com" port="25" userName="test@test.com" password="******" />
        </smtp>
    </mailSettings>
</system.net>

示例C#.NET 4代码:

try
{
 _emailMsg.Body = _MessageBody;
 _emailMsg.Priority = MailPriority.Normal;

 SmtpClient mSmtpClient = new SmtpClient();

 mSmtpClient.UseDefaultCredentials = true;

 mSmtpClient.Send(_emailMsg);
 return true;
}
catch (Exception ex)
{
 throw new Exception("Error Sending Email: " + ex.Message);

 return false;
}

2 个答案:

答案 0 :(得分:1)

查看MailEnable的网站,可能会发生一些guidance on the error messages

进一步猜测,您的域名似乎存在于网络服务器上,并且没有任何问题,但您必须 显式白名单 任何电子邮件address-map.tab文件中的地址。关于这个问题有更多的注释,他们的解决方案是:

  

当你认为这个错误不应该被返回时,这里的分辨率真的解决了。如果认为该地址存在于服务器上,那么您需要检查事务的SMTP日志活动,然后检查是否有任何错误描述可以更好地解释发送地址时发生的情况。然后,您应该检查您的配置以确保该地址确实存在。检查MailEnable \ Config目录或相关数据库表中的address-map.tab文件以查找包含相关邮箱名称的行也是一个好主意。如果您正在检查发件人无法通过服务器进行中继的原因,那么您应该检查客户端设置并确保客户端中的出站设置配置为这样,以便他们可以通过服务器中继到非本地电子邮件地址。 / p>

答案 1 :(得分:1)

使用此:

try {
    _emailMsg.Body = _MessageBody;
    _emailMsg.Priority = MailPriority.Normal;

     SmtpClient mSmtpClient = new SmtpClient(server,25);
     mSmtpClient.Send(_emailMsg);
     return true;
} catch (Exception ex) { 
     throw new Exception("Error Sending Email: " + ex.Message);
     return false;
}