Что может привести к тому, что сообщение, отправленное из Gmail SMTP с использованием C #, не будет доставлено - исключение не выдается - PullRequest
2 голосов
/ 17 февраля 2011

Я пытаюсь отправить почту через свою учетную запись электронной почты в Службах Google.Это настройка для моего собственного домена, и все работает нормально через веб-интерфейс и через outlook.

Однако я пытаюсь отправить электронное письмо с веб-страницы, используя C #, я не получаю никаких исключений, и все кажетсяидут гладко, но письма никогда не приходят:

MailMessage msg = new MailMessage("no-reply@xxxx.co.uk", "dan@xxxx.co.uk");
    SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtp.Credentials = new NetworkCredential("no-reply@xxxx.co.uk", "xxxxxxxxx");
    smtp.EnableSsl = true;
    msg.IsBodyHtml = true;
    msg.Body = body;

    smtp.Send(msg);

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

Есть идеи, что может привести к тому, что это не будет работать?Единственное, что я вижу по сравнению с примерами других людей, это то, что я установил тело как HTML и отправляю его из аккаунта Служб Google, а не из аккаунта @ gmail.com.

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

Я также попытался отправить на порт 25, так как именно это вы используете при настройке Outlook для отправки сучетная запись Gmail.

Одинаковый результат для обоих, без исключения, но электронная почта никогда не приходит.И электронные письма, отправитель и получатель находятся в моем домене с использованием Служб Google для Gmail.

РЕДАКТИРОВАТЬ:

Также я должен упомянуть, что я вошел в систему с использованием обеих учетных записей, и для обоих включены IMAP и POP.в их настройках и т. д.

Новые находки

Это странно

Если я отправляю почту вручную с:

no-reply@mydomain.com to dan@mydomain.com - Then it works

But if I send it through code this way...it doesn't work...

Если я отправлю через код следующее сообщение, оно будет работать:

no-reply@mydomain.com to me@gmail.com or me@ntlworld.com - This works through code!

. Тогда я буду думать, что это означает проблему с dan@mydomain.com, получающим сообщения ... Но он получает любые сообщения.отправлено вручную с любого адреса электронной почты Google, Hotmail или ntlworld, который я пробовал.

Таким образом, аккаунты Служб Google не могут получать сообщения электронной почты, отправленные с помощью кода (маловероятно), или что-то еще здесь играет

Ответы [ 3 ]

3 голосов
/ 17 февраля 2011

Сервер может молча отбросить ваше сообщение, если с ним возникнут проблемы.- Несмотря на любые спецификации, говорящие иначе.

Сообщение может быть потеряно в эфире, несмотря на то, что оно «доставлено».

Возможно, SMTP-сервер применяет строгую фильтрацию и может дополнительно потребовать, чтобы ваш отправитель и получательадреса электронной почты совпадают 'правильно'

Я предлагаю попробовать с другим узлом SMTP просто проверить.:)

0 голосов
/ 17 февраля 2011

Когда вы настраиваете Google Apps, даже если все записи MX работают правильно для отправки почты вручную в другие учетные записи, все равно могут возникнуть проблемы.

Ответ заключается в том, чтобы подождать 12-24 часа после настройки записей MX, даже если все остальное работает нормально.

Если вы не получили исключения, то для меня это единственный ответ на данный момент.

Теперь все работает правильно. Несмотря на то, что все записи MX были правильными на моем DNS, и электронная почта, казалось, работала, все еще происходили изменения в фоновом режиме

0 голосов
/ 17 февраля 2011

Дэн, проверить это Отправка электронной почты через SMTP-сервер Gmail с C #

Надеюсь, это поможет

...