Отправить письмо через Google Apps в C # - PullRequest
6 голосов
/ 31 марта 2010

Я пытаюсь отправить простое электронное письмо через Службы Google / Gmail с использованием C # (System.Net.Mail / Framework 4), и у меня возникают проблемы при этом.

Я получаю следующее исключение: «Время ожидания истекло».

Мой код ниже:

            //Create the mail message
            MailMessage mail = new MailMessage();

            //Set the addresses
            mail.From = new MailAddress("myemail@gmail.com", "My Name");
            mail.To.Add(Email);

            //Set the subject and bodycontent
            mail.Subject = "Email Testing";
            mail.Body = "This is the body of the email";

            //Send the message using the SmtpClient
            SmtpClient smtp = new SmtpClient();
            smtp.EnableSsl = true;
            smtp.Send(mail);

Мой web.config имеет следующие настройки:

      <smtp from="myemail@gmail.com" deliveryMethod="Network">
          <network host="smtp.gmail.com" 
              userName="myemail@gmail.com"
              password="password" 
              port="587" />
      </smtp>

Во время устранения неполадок я попытался:

  • Использование моего личного адреса электронной почты и другого адреса из домена, размещенного в Службах Google.
  • Использование портов 25, 465 и 587
  • Жесткое кодирование настроек конфигурации в коде c # вместо использования web.config
  • Отправка и телнетирование из нескольких сетевых расположений, чтобы гарантировать, что брандмауэр / провайдер не блокировал его
  • Гарантировал, что POP был включен в настройках GMail (согласно Google это должно включить возможность отправки с использованием SMTP)
  • Изменение адреса отправки и ответа на адрес, чтобы обеспечить их соответствие учетной записи (очевидно, необходимость GMail).

Я могу отправлять и получать электронную почту в порядке через интерфейс GMail для обеих моих учетных записей электронной почты. Я также пробовал настройки и решения, предложенные в вопросе № 757987 , но безрезультатно.

1 Ответ

1 голос
/ 31 марта 2010

Ваш код выглядит нормально. Вы говорите, что пробовали Telneting. Вы действительно смогли отправить электронное письмо через telnet?

Вы можете попробовать удалить

from="myemail@gmail.com" deliveryMethod="Network"

из вашего тега smtp, поскольку они не нужны для того, что вы делаете.

EDIT:

Telnet обычно позволяет вам подключаться к серверу smtp и отправлять 16 (?) Байтов данных, прежде чем его выгонят. Если вы не получаете ответы, подобные этим , то, скорее всего, так оно и есть.

Попробуйте открыть порт 587 на брандмауэре и посмотреть, сможете ли вы реально взаимодействовать с сервером smtp через telnet (EHLO, ECHO и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...