Saltar al contenido

Formulario de contacto de MVC con correo electrónico

Esta noticia fue analizado por especialistas para asegurar la veracidad de esta reseña.

Solución:

Enviar un correo electrónico llevará tiempo. Debería ser un hilo. Pon tu código en una función. Y haz los siguientes cambios:

public void SendEmail(string toAddress, string fromAddress, 
                      string subject, string message)

    try
    
        using (var mail = new MailMessage())
        
            const string email = "[email protected]";
            const string password = "password!";

            var loginInfo = new NetworkCredential(email, password);


            mail.From = new MailAddress(fromAddress);
            mail.To.Add(new MailAddress(toAddress));
            mail.Subject = subject;
            mail.Body = message;
            mail.IsBodyHtml = true;

            try
            
                using (var smtpClient = new SmtpClient(
                                                 "smtp.mail.yahoo.com", 465))
                
                    smtpClient.EnableSsl = true;
                    smtpClient.UseDefaultCredentials = false;
                    smtpClient.Credentials = loginInfo;
                    smtpClient.Send(mail);
                

            

            finally
            
                //dispose the client
                mail.Dispose();
            

        
    
    catch (SmtpFailedRecipientsException ex)
    
        foreach (SmtpFailedRecipientException t in ex.InnerExceptions)
        
                status == SmtpStatusCode.MailboxUnavailable)
            
                Response.Write("Delivery failed - retrying in 5 seconds.");
                System.Threading.Thread.Sleep(5000);
                //resend
                //smtpClient.Send(message);
            
            else
            
                Response.Write("Failed to deliver message to 0",
                                  t.FailedRecipient);
            
        
    
    catch (SmtpException Se)
    
        // handle exception here
        Response.Write(Se.ToString());
    

    catch (Exception ex)
    
        Response.Write(ex.ToString());
    


Llame a esa función en su controlador:

[HttpPost]
public ActionResult Contact(MailModels e)

    if (ModelState.IsValid)
    

        //prepare email
        var toAddress = "[email protected]";
        var fromAddress = e.Email.ToString();
        var subject = "Test enquiry from "+ e.Name;
        var message = new StringBuilder();
        message.Append("Name: " + e.Name + "n");
        message.Append("Email: " + e.Email + "n");
        message.Append("Telephone: " + e.Telephone + "nn");
        message.Append(e.Message);

        //start email Thread
        var tEmail = new Thread(() => 
       SendEmail(toAddress, fromAddress, subject, message));
        tEmail.Start();
    
    return View();

Si no recibe el correo electrónico, revise su carpeta de correo no deseado

Comentarios y valoraciones del post

Nos encantaría que puedieras dar recomendación a este enunciado si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *