2017-02-04 1 views
0

Wenn ich meine Anwendung lokal auf localhost ausführen, wird die E-Mail erfolgreich ohne Ausnahmen gesendet. Aber wenn ich die Anwendung veröffentliche und versuche, die E-Mail neu zu erstellen, sendet sie weder die E-Mail noch sendet sie die Ansicht mit dem entsprechenden Fehler.ASP.NET MVC SMTPClient arbeitet nicht auf gehosteten Umgebung

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

Haben Sie versucht, Ihr Programm auf dem Server zu debuggen? Oder fügen Sie die Protokollierung hinzu, damit Sie genau den Pfad sehen können, den der Code einschlägt? – mason

Antwort

0

Die Fehlermeldung hier nicht angezeigt wird, ist es jedoch möglich, dass ein Client-Authentifizierungsfehler ist. Bitte versuchen:

  1. Einloggen in Ihr Google Mail-Konto
  2. Lassen Sie die IP-Adresse Ihres
  3. Retry unter gmail Einstellungen Hosting der E-Mail

Eine andere Sache zu senden zu beachten, brauchen Sie nicht zu versuchen Sie es schließlich mit Ihrem MailMessage() - Objekt. Da es bereits in eine using-Anweisung eingebunden ist, wird es, wenn es das Ende des using-Blocks erreicht, für Sie entsorgt, und alle Fehler werden in Ihrem äußeren try catch-Block gefangen.

0

Entfernen Sie alle Ausnahmen und versuchen Sie es erneut. Finden Sie heraus, was der Fehler ist, dann gehen Sie von dort aus.

Ich vermute, der Grund, warum Sie eine harte Zeit haben, ist b/c der Art, wie Sie Ihren Versuch/Fang eingerichtet haben. Der innere Versuch/Fang scheint mir etwas merkwürdig.

Verwandte Themen