“邮件发送被拒绝”

时间:2013-01-10 17:46:39

标签: asp.net email azure smtp gmail

我正在使用我的域名作为SMTP服务器。

我创建了一个“联系我们”页面,用户可以通过该页面向公司发送电子邮件。

当我从我的电脑发送电子邮件时,它有效,但是有人向我抱怨说,当他们发送电子邮件时,他们会收到以下消息:

Mailbox unavailable. The server response was: 5.7.0 Mail sending denied abcdefghi

View screenshot

以下是我的设置

的Web.config:

<system.net>
  <mailSettings>
    <smtp deliveryMethod="Network" from="info@company.com">
      <network defaultCredentials="false" host="smtp.gmail.com" port="587"
        userName="info@company.com" password="mypassword" enableSsl="true" />
    </smtp>
  </mailSettings>
</system.net>

动作:

public ActionResult Contact(ContactFormModel contact)
{
  ViewBag.Message = false;
  if (ModelState.IsValid)
  {
    var message = new MailMessage();
    var sender = new MailAddress(contact.Email, contact.FullName);
    message.Sender = sender;
    message.From = sender;
    message.To.Add(Settings.Default.ContactUsEmail);
    if (contact.SendSelfCopy)
      message.CC.Add(sender);
    message.ReplyToList.Add(sender);

    message.Subject = string.Format("Company Website - Msg from {0}: {1}",
      contact.FullName, contact.Subject);

    var sb = new StringBuilder();
    sb.AppendFormat("From: <a href='mailto:{1}'>{0}</a>: <b>{2}</b><hr/>",
      sender.DisplayName, sender.Address, contact.Subject);
    sb.AppendLine(contact.Message);
    message.Body = sb.ToString();
    message.IsBodyHtml = true;

    using (var client = new SmtpClient())
    {
      client.Timeout = 15000;

      try
      {
        client.Send(message);
      }
      catch (Exception)
      {
        throw;
      }
    }

    ModelState.Clear();
    ViewBag.Success = true;
    ViewBag.Message = Settings.Default.ContactUsSuccessMessage;
    return View();
  }

  return View(contact);
}

该网站托管在Windows Azure中,并使用.NET 4.5运行。

1 个答案:

答案 0 :(得分:2)

尝试通过Azure发送电子邮件时遇到了完全相同的问题。

此处的问题是Google不信任您部署的IP地址。对此的简短修复是远程访问您的网络角色并使用您尝试使用的帐户登录Gmail。

我还通过从本地计算机登录Gmail帐户并点击“信任连接”获取网络角色的IP地址来解决此问题。

但是,您应该记住,当Azure决定撤销您的部署时,每次获得新的IP地址时都必须这样做。

在我的应用程序中,我刚刚连接到我的clent公司网络上的SMTP服务器。如果这不是一个选项,您可以尝试SendGrid