2017-08-21 3 views
2

Ich bin Anfänger in ASP.NET MVC und versuche, E-Mail mit smtp server und ajax in WebApplication zu bekommen. Wenn der Benutzer auf die Schaltfläche klickt, generiert mein Code die E-Mail, die an die gewünschte ID gesendet wird. Ich bekomme erfolgreich alle meine Werte, indem ich den Code debugge. Aber ich kann die E-Mail dort nicht empfangen. Obwohl, bekomme ich auch Erfolg Massage vom Browser. Aber in meinem Wunschkonto ist keine E-Mail vorhanden.sende email von smtp und ajax in asp.net mvc

Index.cshtml

<div> 
    <a class="btn btn-primary btn-block btn-lg" onclick="SendEmail()" >Click to send Email</a> 
</div> 

<script> 
    var SendEmail = function() { 
     $.ajax({ 
      type: "Post", 
      url: "/Feedbacks/SendMailToUser", 
      success: function (data) { 
       alert("Success"); 
      } 
     }) 
    } 
</script> 

FeedbacksController.cs

public JsonResult SendMailToUser() { 
      bool result = false; 
      result = SendEmail("[email protected]", "Test", "<p>Hi abc,<br/>This message is for testing purpose. So don't be upset.<br/>Kind Regards,<br/>abc</p>"); 
      return Json(result, JsonRequestBehavior.AllowGet); 
     } 
     public bool SendEmail(string toEmail, string subject, string emailBody) { 
      try 
      { 
       string senderEmail = System.Configuration.ConfigurationManager.AppSettings["SenderEmail"].ToString(); 
       string senderPassword = System.Configuration.ConfigurationManager.AppSettings["SenderPassword"].ToString(); 

       SmtpClient client = new SmtpClient("smtp.gmail.com", 578); 
       client.EnableSsl = true; 
       client.Timeout = 100000; 
       client.DeliveryMethod = SmtpDeliveryMethod.Network; 
       client.UseDefaultCredentials = false; 
       client.Credentials = new NetworkCredential(senderEmail, senderPassword); 

       MailMessage mailMessage = new MailMessage(senderEmail, toEmail, subject, emailBody); 
       mailMessage.IsBodyHtml = true; 
       mailMessage.BodyEncoding = UTF8Encoding.UTF8; 

       client.Send(mailMessage); 

       return true; 
      } 
      catch (Exception ex) { 
       return false; 
      } 

     } 
    } 

Web.config

<appSettings> 
    <add key="SenderEmail" value="[email protected]" /> 
    <add key="SenderPassword" value="********" /> 
</appSettings> 
+0

Was ist der Wert von 'Daten' in Ihrem Ajax Callback? Ist es wahr oder falsch ? Wenn es falsch ist, wissen Sie, welcher Teil Ihres Codes ausgeführt wird. – Shyju

+0

Ändern Sie Ihre Port-Nummer sowie ändern Sie enableSSL zu false –

+0

@ UbiquitousDevelopers nur, wenn Sie unsichere E-Mail senden möchten :-) – ADyson

Antwort

1

Versuchen zu verwenden SmtpClient ohne Objektinitialisierer:

SmtpClient client = new SmtpClient(); 
1

Ich habe mein Problem gelöst, weil ich falsche Portnummer verwendet wurde. Als ich

SmtpClient client = new SmtpClient("smtp.gmail.com", 587); 

anstelle von

SmtpClient client = new SmtpClient("smtp.gmail.com", 578); 

bekam ich E-Mail gibt.