【问题标题】:Mailbox Unavailable in c#c#中邮箱不可用
【发布时间】:2015-02-02 10:55:37
【问题描述】:

我正在尝试通过我的程序向自己发送电子邮件,使用这种方法:

MailMessage email = new MailMessage("IT_REQUEST@creandsel.com.au", "ben.hall@creandsel.com.au");
SmtpClient client = new SmtpClient();
client.Port = 25;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Host = "hp132.hostpapa.com";
email.Subject = "New IT Request";
email.Body = Model.Description;

client.Send(email); // Error catches here

但是我收到错误消息:

邮箱不可用。服务器响应是:访问被拒绝 - HELO 名称无效(请参阅 RFC2821 4.1.1.1)

我尝试过备用主机 (creandsel.com.au),效果相同。我相信这可能是因为我将其从内部网络发送到第三方电子邮件提供商。

另外,不确定这是否重要,但发件人 (IT_REQUEST@creandsel.com.au) 不存在。

【问题讨论】:

    标签: c#


    【解决方案1】:

    首先确保您的环境中的 SMTP 为 enabled。如果启用,您需要传递 SMTP 凭据(用户名/密码对),因为没有成功通过您的 SMTP 服务器进行身份验证。

    SmtpClient client = new SmtpClient();
    client.Port = 25;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    // explicitly declare that you will be providing the credentials:
    client.UseDefaultCredentials = false;
    client.Credentials = new NetworkCredential("username", "password");
    client.Host = "hp132.hostpapa.com";
    email.Subject = "New IT Request";
    email.Body = Model.Description;
    

    【讨论】:

    • 我能澄清一下NetworkCredential 指的是什么吗?是用户信息、主机信息还是内网信息?
    • @Ben 它是验证您的smtp 服务器的用户名/密码。您需要询问您的基础设施人员他们为此使用什么。如果您的公司使用的是 Microsoft Exchange,则很可能是您的 Win 登录名,在这种情况下,您可以改用 .UseDefaultCredentials = true。讽刺的是DefaultCredentials 不是默认值。
    猜你喜欢
    • 2011-12-16
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多