2013-05-13 4 views
0

У меня есть страница контакта на моем сайте, и я хочу, чтобы пользователи вводили их имя и адрес электронной почты (без пароля) и отправляли электронное письмо при нажатии кнопки.Отправить письмо через SMTP

Я сделал Google и все решения я получаю требуется пароль пользователя,

public static void SendMessage(string subject, string messageBody, string toAddress, string ccAddress, string fromAddress) 
{ 
    MailMessage message = new MailMessage(); 
    SmtpClient client = new SmtpClient(); 

    // Set the sender's address 
    message.From = new MailAddress(fromAddress); 

    // Allow multiple "To" addresses to be separated by a semi-colon 
    if (toAddress.Trim().Length > 0) 
    { 
     foreach (string addr in toAddress.Split(';')) 
     { 
      message.To.Add(new MailAddress(addr)); 
     } 
    } 
    // Allow multiple "Cc" addresses to be separated by a semi-colon 
    if (ccAddress.Trim().Length > 0) 
    { 
     foreach (string addr in ccAddress.Split(';')) 
     { 
      message.CC.Add(new MailAddress(addr)); 
     } 
    } 
    // Set the subject and message body text 
    message.Subject = subject; 
    message.Body = messageBody;  

    // smtp settings 
    var smtp = new System.Net.Mail.SmtpClient(); 
    { 
     smtp.Host = "smtpHost"; 
     smtp.Port =portno; 
     smtp.EnableSsl = true; 
     smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 
     smtp.Credentials = new NetworkCredential("fromEmail", "fromPassword"); 
     smtp.Timeout = 20000; 
    } 

    // Send the e-mail message 
    smtp.Send(message); 
} 

Но я не хочу, чтобы заставить пользователей ввести пароль. Есть ли другое решение, использующее SMTP?

Ошибка я получаю A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

+2

Возможно, вы случайно напишите программу фишинга. Вы не должны запрашивать у пользователей свои пароли. Скорее всего, вам нужно получить пароль для вашего SMTP-сервера, поскольку анонимная отправка обычно заблокирована. Это будет пароль * вы * контроль, а не ваш пользователь. –

+0

Да ... Это логично ... И я тоже это пробовал, но я получаю сообщение об ошибке «Ошибка отправки электронной почты». Я уверен, что имя пользователя и пароль верны. – user1181942

+0

Свойство InnerException поможет вам в этом. –

ответ

0

У меня есть эта функция в моем классе полезности, и он работает как шарм.

public static bool SendMail(string Email, string MailSubject, string MailBody) 
    { 
     bool isSent = false, isMailVIASSL = Convert.ToBoolean(ConfigurationManager.AppSettings["MailServerUseSsl"]); 

     string mailHost = ConfigurationManager.AppSettings["MailServerAddress"].ToString(), 
     senderAddress = ConfigurationManager.AppSettings["MailServerSenderUserName"].ToString(), 
     senderPassword = ConfigurationManager.AppSettings["MailServerSenderPassword"].ToString(); 

     int serverPort = Convert.ToInt32(ConfigurationManager.AppSettings["MailServerPort"]); 

     MailMessage msgEmail = new MailMessage(new MailAddress(senderAddress), new MailAddress(Email)); 
     using (msgEmail) 
     { 
      msgEmail.IsBodyHtml = true; 
      msgEmail.BodyEncoding = System.Text.Encoding.UTF8; 
      msgEmail.Subject = MailSubject; 
      msgEmail.Body = MailBody; 

      using (SmtpClient smtp = new SmtpClient(mailHost)) 
      { 
       smtp.UseDefaultCredentials = false; 
       smtp.EnableSsl = isMailVIASSL; 
       smtp.Credentials = new NetworkCredential(senderAddress, senderPassword); 
       smtp.Port = serverPort; 
       try 
       { 
        smtp.Send(msgEmail); 
        isSent = true; 
       } 
       catch (Exception ex) 
       { 
        throw ex; 
       } 
      } 
     } 
     return isSent; 
    } 

<!-- Mail Server Settings --> 
<add key="MailServerAddress" value="smtp.gmail.com" /> 
<add key="MailServerPort" value="25" /> 
<add key="MailServerSenderUserName" value="[email protected]" /> 
<add key="MailServerSenderPassword" value="password" /> 
<add key="MailServerUseSsl" value="True" /> 
+0

Привет, @Ali Umair, но для вашего кода требуются «sendersAddress» и «SendersPassword», которые мне не нужны. – user1181942

+0

Это имя пользователя и пароль для вашей учетной записи r, которая обычно будет отправляться по электронной почте [email protected] Это не электронная почта и пароль пользователя, тогда как адрес электронной почты в параметрах - это адрес электронной почты пользователя. –

+0

Да, я пробовал то же самое, но не использовал .. Похоже на какую-то другую проблему. – user1181942

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