2011-01-15 7 views
4

Можем ли мы отправить форму электронной почты на локальный хост с помощью gmail smtp? Я пытаюсь и получаю ошибку. Операция истекло.мы можем отправлять электронную почту с локального хоста с помощью учетной записи gmail?

Я пытаюсь отправить электронное письмо с локального хоста за последние 3 дня. Он отлично работает, если я отправляю электронные письма с моего сервера хостинга с помощью gmail, но он не работает на localhost. Я отключил антивирус антивирусного брандмауэра, но даже тогда не повезло. Пожалуйста, дайте мне знать, что вы когда-либо использовали gmail для отправки писем с localhost (без участия какого-либо сервера)

Если это возможно, то здесь мой код, пожалуйста, направляйте меня. Плес помог мне и направил меня, я застрял.

благодаря

protected void btnConfirm_Click(object sender, EventArgs e) 
{ 
    MailMessage message = new MailMessage(); 
    message.To.Add("[email protected]"); 
    message.From = new MailAddress("[email protected]"); 
    message.Subject = "New test mail"; 
    message.Body = "Hello test message succeed"; 
    message.IsBodyHtml = true; 
    message.BodyEncoding = System.Text.Encoding.ASCII; 
    message.Priority = System.Net.Mail.MailPriority.High; 

    SmtpClient smtp = new SmtpClient(); 
    smtp.EnableSsl = true; 
    smtp.Port = 465;   
    smtp.UseDefaultCredentials = false; 
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 
    smtp.Host = "smtp.gmail.com"; 
    smtp.Credentials = new NetworkCredential("[email protected]", "**mypassword**"); 
    try 
    { 
     smtp.Send(message); 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
} 
+0

Вы пытались удалить инструкции try/catch и запустить его в отладчике, чтобы узнать, где он застревает? –

+0

на smtp.Send (сообщение); но первое, что вы когда-либо использовали gmail для отправки почты из loclhost? – user576510

+0

Кевин, я хочу спросить, возможно ли это? – user576510

ответ

5

Да, вы можете отправлять электронную почту с помощью gmail с localhost.

Я один раз написал a blogpost about how to send email using gmail.

Вставка кода фрагмента из my blogpost.

Это рабочий код, и я часто его использую.

/// <summary> 
/// A Generic Method to send email using Gmail 
/// </summary> 
/// <param name="to">The To address to send the email to</param> 
/// <param name="subject">The Subject of email</param> 
/// <param name="body">The Body of email</param> 
/// <param name="isBodyHtml">Tell whether body of email will be html of plain text</param> 
/// <param name="mailPriority">Set the mail priority to low, medium or high</param> 
/// <returns>Returns true if email is sent successfuly</returns> 
public static Boolean SendMail(String to, String subject, String body, Boolean isBodyHtml, MailPriority mailPriority) 
{ 
    try 
    { 
     // Configure mail client (may need additional 
     // code for authenticated SMTP servers) 
     SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587); 

     // set the network credentials 
     mailClient.Credentials = new NetworkCredential("[email protected]", "YourGmailPassword"); 

     //enable ssl 
     mailClient.EnableSsl = true; 

     // Create the mail message (from, to, subject, body) 
     MailMessage mailMessage = new MailMessage(); 
     mailMessage.From = new MailAddress("YourGmailE[email protected]"); 
     mailMessage.To.Add(to); 

     mailMessage.Subject = subject; 
     mailMessage.Body = body; 
     mailMessage.IsBodyHtml = isBodyHtml; 
     mailMessage.Priority = mailPriority; 

     // send the mail 
     mailClient.Send(mailMessage); 

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

Если ошибка Operation has timed out, то одна возможность заключается в том, что сетевой брандмауэр блокирует исходящий доступ к указанному хосту/порту. Это будет иметь место в офисах, в которых есть брандмауэр/прокси-серверы для ограничения доступа в Интернет. Отключение брандмауэра на localhost не помогло бы.

Один из способов проверить это telnet smtp.gmail.com 465. Если это время, то ваша проблема понятна.

+0

Raghuram Я пробовал, но не получаю никакого экрана ответа, становится черным и ничего не делать. plz advice – user576510

+0

@user, то ваши порты заблокированы. проверьте с вашим сетевым администратором, это НИЧЕГО не связано с кодом. –

1

Используйте порт

Btw, имея что throw ex в блоке поймать действительно плохо, вы потеряете трассировки стека. Я уверен, что это было только для целей отладки, но было бы лучше использовать throw без ex, чтобы восстановить одно и то же исключение.

+0

Крис благодарит меня за то, что я использовал трюк и получил ту же ошибку «Существующее соединение было принудительно закрыто удаленным хостом». Если я использую порт 587, я получаю эту ошибку, но если я использую порт 465, время не будет. plz guide – user576510

+0

@ user576510, я проверил с вашим точным кодом, используя порт 587, и, конечно, мои данные о счете, он работал нормально.Комментарий, сделанный мной в отношении 'throw ex', не изменил бы ошибку, это был просто общий совет по лучшей практике, так что информация stacktrace не потеряна, не имеет отношения к этой проблеме, но это рекомендация по лучшей практике. –

+0

У Криса есть идея, почему он не работает на моей машине? спасибо – user576510

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

  • Нет связанных вопросов^_^