3

ドメインのSMTPサーバーとして使用しています。

ユーザーが会社にメールを送信できる「お問い合わせ」ページを作成しました。

コンピューターから電子メールを送信すると機能しますが、電子メールを送信すると次のメッセージが表示されるとの不満があります。

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

スクリーンショットを見る

これが私の設定です、

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);
}

このWebサイトはWindowsAzureでホストされており、.NET4.5で実行されます。

4

1 に答える 1

2

Azureを介してメールを送信しようとしたときに、まったく同じ問題が発生しました。

ここでの問題は、GoogleがデプロイメントのIPアドレスを信頼していないことです。これに対する簡単な修正は、Webロールにリモートでアクセスし、使用しようとしているアカウントでGmailにログインすることです。

また、ローカルマシンからGmailアカウントにログインし、WebロールのIPアドレスの[接続を信頼する]をクリックして、これを修正しました。

ただし、Azureがデプロイをバウンスすることを決定したときに、新しいIPアドレスを取得するたびにこれを行う必要があることに注意してください。

私のアプリケーションでは、クレントの企業ネットワーク上のSMTPサーバーに接続することになりました。それがオプションでない場合は、SendGridを試してみてください。

于 2013-01-10T18:48:45.737 に答える