簡體   English   中英

ASP.NET MVC SMTPClient在托管環境中不起作用

[英]ASP.NET MVC SMTPClient not working on hosted environment

當我在本地主機上本地運行我的應用程序時,該電子郵件將毫無例外地成功發送出去。 但是,當我發布應用程序並嘗試重新創建電子郵件時,它既不發送電子郵件也不發送帶有相應錯誤的View。

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@email.com"));
        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);
}

錯誤消息未在此處顯示,但是,可能是客戶端身份驗證錯誤。 請試試:

  1. 登錄到您的Gmail帳戶
  2. 在Gmail設置下允許您的托管IP
  3. 重試發送電子郵件

要注意的另一件事是,您最終不必在MailMessage()對象上嘗試..。 由於它已經被包裝在using語句中,當它到達using塊的末尾時,它將為您處理它,並且任何錯誤都將被捕獲在您的外部try catch塊中。

刪除所有這些異常處理,然后重試。 找出錯誤所在,然后從那里繼續。

我懷疑您遇到困難的原因是嘗試/捕獲的建立方式中的b / c。 內在的嘗試/追趕使我感到有點奇怪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM