2014-09-07 1 views
2

я хочу, чтобы отправить письмо с помощью ASP.NET MVC 4 приложения я использую этот методкак отправить по электронной почте в asp.net mvc4

 public void send_mail(ProcRec.Models.AccuseReception _objModelMail) 
    { 

     MailMessage mail = new MailMessage(); 
     mail.To.Add(_objModelMail.To); 
     mail.From = new MailAddress(_objModelMail.From); 
     mail.Subject = _objModelMail.Subject; 
     string Body = _objModelMail.Body; 
     mail.Body = Body; 
     mail.IsBodyHtml = true; 
     SmtpClient smtp = new SmtpClient(); 
     smtp.Host = "smtp.gmail.com"; 
     smtp.Port = 587; 
     smtp.UseDefaultCredentials = false; 
     smtp.Credentials = new System.Net.NetworkCredential 
     ("username", "password");// Enter seders User name and password 
     smtp.EnableSsl = true; 
     smtp.Send(mail); 


    } 

Моя модель:

  public class AccuseReception 
{ 


    public string From { get; set; } 
    public string To { get; set; } 
    public string Subject { get; set; } 
    public string Body { get; set; } 


} 

контроллер :

 if (ModelState.IsValid) 
     { 

      AccuseReception confermation_mail = new AccuseReception { 

      From="[email protected]", 
      To ="[email protected]", 
      Subject ="mail_de confermation", 
      Body = "votre demande est enregistrer ", 

      }; 

     send_mail(my_mail); 
     } 

я не получаю сообщение об ошибке, но почта не посылает и ModelState не является действительным

+0

Ваш пример не отображает использование модели ... это довольно простой. BTW, если вы хотите легко отправить более сложные html в виде электронных писем, вы можете использовать 'Postal'. В почте вы строите представления, которые отправляются в виде сообщений электронной почты: http://aboutcode.net/postal/ – ilans

+0

это, как я использую свою модель AccuseReception my_mail = новый AccuseReception { От = «[email protected]», To = candidat.adresse_mail, Тема = "mail_de confermation", Body = "votre demande est enregistrer, votre code d'identification, vre informations est ..Merci", }; – saidmohamed11

+0

Соус: http://www.c-sharpcorner.com/uploadfile/sourabh_mishra1/sending-an-e-mail-using-asp-net-mvc/ –

ответ

3

ModelState относится к модели, которая передается в соответствующий вид/контроллер.

Я вижу, что в вашем контроллере вы создаете новый AccuseReception, поэтому я предполагаю, что вы не получаете AccusReception в качестве модели в этом действии контроллера.

Это причина, по которой ваш ModelState.IsValid возвращает false, и никакие письма не отправляются.

Попробуйте что-то вроде:

public void SendMail(ProcRec.Models.AccuseReception _objModelMail) 
{ 
     if(ModelState.IsValid) 
     { 

      MailMessage mail = new MailMessage(); 
      mail.To.Add(_objModelMail.To); 
      mail.From = new MailAddress(_objModelMail.From); 
      mail.Subject = _objModelMail.Subject; 
      string Body = _objModelMail.Body; 
      mail.Body = Body; 
      mail.IsBodyHtml = true; 
      SmtpClient smtp = new SmtpClient(); 
      smtp.Host = "smtp.gmail.com"; 
      smtp.Port = 587; 
      smtp.UseDefaultCredentials = false; 
      smtp.Credentials = new System.Net.NetworkCredential 
      ("username", "password");// Enter seders User name and password 
      smtp.EnableSsl = true; 
      smtp.Send(mail); 
     }  
    } 
0

Вот пример vb.net, который должен работать на вас. Я не вижу вашу модель в примере. Но это должно быть достаточно:

Dim smtpClient As New SmtpClient(_ServerHost, _ServerPort) 
smtpClient.Credentials = New Net.NetworkCredential(_EmailAddress, _EmailPass, String.Empty) 
smtpClient.EnableSsl = True 
smtpClient.Timeout = 60000 

Dim mailmsg as New MailMessage 
mailmsg.Subject = i_Subject 
mailmsg.From = New MailAddress(emailAddress, displayName) 
mailmsg.To.Clear() 
mailmsg.IsBodyHtml = True 
mailmsg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure 

' Add email addresses 
mailmsg.To.Add("[email protected]") 

mailmsg.Body = SomeBodyHTML 

If Not String.IsNullOrEmpty(mailmsg.Body.Trim) Then 
    ' Send message 
    smtpClient.Send(mailmsg) 
End If  

BTW, если вы хотите, чтобы легко отправлять более сложные HTML как сообщения электронной почты, вы можете использовать Postal. В Postal вы строите представления, которые отправляются в виде сообщений электронной почты:

aboutcode.net/postal

Смежные вопросы