2016-05-29 5 views
0

Я делаю домашнее задание, и мне нужно отправить подтверждение по электронной почте после нажатия кнопки «подтвердить меня».Не удается отправить письмо (smtp)

Ниже кнопка и текстовое поле:

button and textbox

Таким образом, поток, вы должны ввести свой studentID, а затем система будет проверять базу данных Ваш ID существует или нет. и если ваш studentID существует, мы отправим подтверждение (случайный пароль для доступа в Интернет).

Но здесь у меня есть проблемы с отправкой электронной почты и, честно говоря, я не знаю, что не так.

Вот мой код часть (только отправка почты код):

public void sendingverification() 
    { 
     //get EMAIL from spesific ID 
     string getEmail = "SELECT Email FROM TableStudent where StudentID = '" + IdTxt.Text + "'"; 
     SqlCommand sqlcomEmail = new SqlCommand(getEmail, con); 

     //get STUDENT FIRST NAME from spesific ID 
     string getName = "SELECT StudentFName FROM TableStudent where StudentID = '" + IdTxt.Text + "'"; 
     SqlCommand sqlcomName = new SqlCommand(getName, con); 

     string randomPw = System.Web.Security.Membership.GeneratePassword(10, 5); 
     string activationUrl = "http://aws.prominensa.com/izari/web-alumni/login.html"; 
     var fromAddress = new MailAddress("[email protected]", "S2 Alumnae Team"); 
     var toAddress = new MailAddress(sqlcomEmail.ToString(), sqlcomName.ToString()); 
     const string fromPassword = "123456"; 
     const string subject = "Activation Link for S2 Alumnae"; 
     string body = "Hello " + sqlcomName.ToString() + ", "; 
     body += "<br /><br />your account is almost done. You can login with your account now with this link below."; 
     body += "<br /><" + activationUrl; 
     body += "<br />< Please note that you will be able to login using: "; 
     body += "<br />< StudentID = " + IdTxt.Text; 
     body += "<br />< Password = " + randomPw; 
     body += "<br />< Thank you."; 

     var smtp = new SmtpClient 
     { 
      Host = "smtp.gmail.com", 
      Port = 587, 
      EnableSsl = true, 
      DeliveryMethod = SmtpDeliveryMethod.Network, 
      Credentials = new NetworkCredential(fromAddress.Address, fromPassword), 
      Timeout = 20000 
     }; 

     using (var message = new MailMessage(fromAddress, toAddress) 
     { 
      Subject = subject, 
      Body = body 
     }) 
     { 
      smtp.Send(message); 
     } 
    } 
+0

Можете ли вы, пожалуйста, 1) Изменить код и написать правильный код на C#? 2) Ваш объект '' 'message''' кажется удаленным даже до того, как вы назовете * Отправить *, 3) Какую ошибку вы получаете? – Ruskin

+1

Какое исключение или ошибка вы получаете? –

ответ

0

ли вы отправляете почту с вашего Gmail, есть некоторые небольшие настройки, которые должны быть сделаны. (Я не помню, что настройка точно, Если вы этого не сделаете, вы получите сообщение об ошибке, просто сообщите, что вы найдете то, что есть).

Я вижу, что вы используете String для создания своего сообщения, НЕ делайте этого, вместо этого используйте StringBuilder.

Проверьте этот фрагмент.

  MailMessage mailObj = new MailMessage(); 
      //verification mail 
      mailObj.Subject = "Your Email Subject line"; 

      mailObj.Body = ComposeVerficationMailBody(emailDetails.MailMessage, emailDetails.RecipientName); 
      emailDetails.SenderName = "Your Website Name"; 


      mailObj.IsBodyHtml = true; 
      mailObj.Priority = System.Net.Mail.MailPriority.High; 

      //TO 
      mailObj.To.Add(emailDetails.RecipientEmailAddress); 
      mailObj.BodyEncoding = Encoding.Default; 
      mailObj.ReplyToList.Add(emailDetails.ReplyToEmailAddress); 
      //From 
      mailObj.From = new MailAddress(senderEmailAddress, senderDisplayName); 
      using (SmtpClient mailClient = new SmtpClient()) 
      { 
       mailClient.Host = "gmail host"; 
       mailClient.Port = 587; 
       mailClient.EnableSsl = false; 
       mailClient.UseDefaultCredentials = true; 
       mailClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 
       //mailClient.Credentials = new NetworkCredential("senderEmail", "senderPassword"); 


       MailAddress msg = new MailAddress(emailDetails.ReplyToEmailAddress); 
       mailClient.Timeout = 500000; 
       mailClient.Send(mailObj); 



private String ComposeVerficationMailBody() 
{ 
    StringBuilder emailMessage = new StringBuilder(); 
    //build your message here 
    return emailMessage.toString(); 
} 

Надеюсь, что этого достаточно.