Отправка электронной почты Asp.Net через Gmail - PullRequest
6 голосов
/ 30 декабря 2010

Я пытаюсь отправить электронное письмо через GMail с ASP.Net, используя код и конфигурацию ниже.К сожалению, это, кажется, не работает, и это также не выдает сообщение об ошибке.В журналах сервера или почтовых папках IIS нет ничего, я даже проверил корзину с адреса, чтобы проверить, не оказалась ли почта там.Любая помощь будет принята с благодарностью.

Раздел C #

    public void SendFeedback()
    {
        string emailFrom = this.Email.Text;

        MailMessage message = new MailMessage();
        // here is an important part:
        message.From = new MailAddress(emailFrom, "Mailer");
        // it's superfluous part here since from address is defined in .config file
        // in my example. But since you don't use .config file, you will need it.
        message.Subject = "www.gumpshen.com - Website Query";
        message.IsBodyHtml = true;
        message.Body = string.Format(" Name = {0}, Phone = {1}", Name.Text, Phone.Text);
        message.Body += Environment.NewLine;
        message.Body += Environment.NewLine;
        message.Body += ProjectDetails.Text; ;

        var client = new SmtpClient();

        try
        {
            client.Send(message);

Это раздел конфигурации:

<system.net>
  <mailSettings>
    <smtp from="myEmail@gmail.com" deliveryMethod="Network" >
      <network host="smtp.gmail.com" port="587" 
        userName="myEmail@gmail.com" password="myPassword"/>
    </smtp>
  </mailSettings>
</system.net>

1 Ответ

12 голосов
/ 30 декабря 2010

Вам нужно client.EnableSsl=true;

Проверьте код с этого сайта: Электронная почта через Gmail

Ниже приведен пример отправки электронной почты в формате HTML со страницы ASP.NET с использованием учетной записи Google. (Эту настройку можно легко использовать для отправки сообщений через любой другой SMTP-сервер, который требует аутентификации). Примечание: фрагмент кода предполагает, что на странице есть компонент Label с именем lblMsg, который будет отображаться сообщение об успехе / неудаче пользователю, отправляющему электронное письмо. (Но это можно легко изменить).

   SmtpClient client = new SmtpClient();
   client.DeliveryMethod = SmtpDeliveryMethod.Network;
   client.EnableSsl = true;
   client.Host = "smtp.gmail.com";
   client.Port = 587;

   // setup Smtp authentication
   System.Net.NetworkCredential credentials = 
       new System.Net.NetworkCredential("your_account@gmail.com", "yourpassword");
   client.UseDefaultCredentials = false;
   client.Credentials = credentials;                

   MailMessage msg = new MailMessage();
   msg.From = new MailAddress("your_account@gmail.com");
   msg.To.Add(new MailAddress("destination_address@someserver.com"));

   msg.Subject = "This is a test Email subject";
   msg.IsBodyHtml = true;
   msg.Body = string.Format("<html><head></head><body><b>Test HTML Email</b></body>");

   try
   {
       client.Send(msg);
       lblMsg.Text = "Your message has been successfully sent.";
   }
   catch (Exception ex)
   {
       lblMsg.ForeColor = Color.Red;
       lblMsg.Text = "Error occured while sending your message." + ex.Message;
   }
...