2017-02-04 12 views
0

localhostでローカルにアプリケーションを実行すると、例外なしで電子メールが正常に送信されます。しかし、私がアプリケーションを公開し、電子メールを再作成しようとすると、電子メールは送信されず、対応するエラーのあるビューも送信されません。ASP.NET MVC SMTPClientがホストされた環境で動作しない

try 
{ 
    using (var mail = new MailMessage()) 
    { 
     const string email = "*******@gmail.com"; 
     const string password = "*********"; 
     var loginInfo = new NetworkCredential(email, password); 
     mail.From = new MailAddress("*******@gmail.com"); 
     mail.To.Add(new MailAddress("[email protected]")); 
     mail.Subject = subject; 
     mail.Body = body; 
     mail.IsBodyHtml = true; 
     try 
     { 
      using (var smtpClient = new SmtpClient("smtp.gmail.com", 587)) 
      { 
       smtpClient.EnableSsl = true; 
       smtpClient.UseDefaultCredentials = false; 
       smtpClient.Credentials = loginInfo; 
       smtpClient.Send(mail); 
      } 
     } 
     finally 
     { 
      mail.Dispose(); 
     } 

    } 
} 
catch (SmtpFailedRecipientsException ex) 
{ 
    foreach (SmtpFailedRecipientException t in ex.InnerExceptions) 
    { 
     var status = t.StatusCode; 
     if (status == SmtpStatusCode.MailboxBusy || 
      status == SmtpStatusCode.MailboxUnavailable) 
     { 
      return View(status); 
     } 
     else 
     { 
      return View(status); 
     } 
    } 

} 
catch (SmtpException Se) 
{ 
    // handle exception here 
    return View(Se); 
} 

catch (Exception ex) 
{ 
    return View(ex); 
} 
+0

サーバーでプログラムのデバッグを試みましたか?また、ロギングを追加することで、コードのパスを正確に確認することができます。 – mason

答えて

0

ここではエラーメッセージは表示されませんが、クライアント認証エラーである可能性があります。 試してください:あなたのGmailアカウントに

  1. ログイン
  2. 注意すべきもう一つは、電子メール

を送信するホスティング

  • Gmailの設定の下で再試行のIPは、あなたがする必要はありません許可最後にあなたのMailMessage()オブジェクトを試してみてください。すでにusingステートメントでラップされているので、usingブロックの終わりに達すると、それが処分され、エラーが外部のtry catchブロックで捕捉されます。

    0

    例外処理をすべて削除して、もう一度やり直してください。エラーが何であるかを見つけ、そこから行ってください。

    あなたが試してみるのは難しいですね。インナートライ/キャッチはちょっと奇妙だと私にぶつけます。

    関連する問題