|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Я ранее использовал CDO.Message для этих целей: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
Изучаю, что есть в .Net. System.Web.Mail (обертка над CDO) типа устарел. Но есть типа System.Net.Mail -его и пользуйте. С обычным SMTP (25-й порт) проблем не увидел, пробую gmail.com Пример упростил до предела: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Не работает зараза. Время ожидания операции истекло. Гуглил. Нашел вот это: http://stackoverflow.com/questions/32260/sending-email-in-net-through-gmail Поменял порт: Код: vbnet 1.
Заработало. Попытался ради интереса воткнуть 587- порт в старый CDO-код: .Item(v_Conf & "smtpserverport") = "587" Пишет: транспорту не удалось подключиться к серверу, а с 465-м работает. И вот я честно этой фигни не догоняю. SSL-Порт всю жизнь был по дефолту 465, во всех SMTP-клиентах (это справедливо для gmail, для yandex.ru, для mail.ru) откуда взялся 587? Что не так делаю? Что не понимаю? Я конечно не спец в этих почтах, но элементарная неглючная ф-ция отправки через стандартный SMTP(с SSL или без) мне необходима. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2015, 17:57 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2015, 19:05 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
buser, похоже на то, как всегда чего-то не хватает. По твоей ссылке дальше еще явно на эту тему сказано: SmtpClient.EnableSsl Property An alternate connection method is where an SSL session is established up front before any protocol commands are sent. This connection method is sometimes called SMTP/SSL, SMTP over SSL, or SMTPS and by default uses port 465. This alternate connection method using SSL is not currently supported. Попробую счас к CDO напрямую подключиться (без "классов"), посмотрю насколько в .Net это прокатит. System.Web.Mail они не рекомендуют, и в этой старой обертке похоже не все гладко с Encording (если UTF-8 использовать), ее точно не хочу. Использовать System.Net.Mail + TLS + 587-й порт м.б. и вариант, но это нестандартный подход (user-обыватель привык к 465-му). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2015, 20:36 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Честно говоря не понял, в чем именно проблема? Какая разница, какой там порт, если все работает? В инструкциях четко сказано, что для SSL вам нужен 465, для TLS - 587. SmtpClient поддерживает explicit ssl, что означает соединение по незашифрованному каналу, а затем starttls. SSL/465 устарел. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2015, 21:54 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Дмитрий77но это нестандартный подход (user-обыватель привык к 465-му). С какой стати ваши юзеры вообще должны знать про номер порта? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2015, 21:57 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
[quot Arm79]Дмитрий77С какой стати ваши юзеры вообще должны знать про номер порта? Надеюсь вы не предлагаете "вшивать" номер порта в код? Вообще-то в любом SMTP клиенте SMTP-сервер настраивается путем указания сервера, порта, user-password, ssl(да/нет). И настраивается он как правило по инструкции от провайдера. А инструкции вот они. Помощь Почта Mail.Ru Доступ из почтовых программ Настройка почтовых программ Яндекс Помощь Arm79SSL/465 устарел Да неужели в самом деле? Во всех инструкциях все так и пестрит 465-м портом, а 587 если где и упомянается то лишь местами и вскользь. Ну я проверил, не знаю как в C#, но в VB.Net классический CDO-код (позднее связывание без ранней ссылки на COM-объект) работает на ура, нарочно протестировал как x64 так и x86 код на Win 8.1, а также на XP(x86): Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
Как вариант "НЕРЕКОМЕНДУЕМЫЙ" System.Web.Mail - тоже все работает (ну это же тоже самое): Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Но CreateObject("CDO.Message") мне честно нравится больше. По хорошему сделать выбор в настройках что использовать: System.Net.Mail или CDO.Message (мало какие несовместимости в частных случаях) А с другой стороны много вариантов -> лишняя путаница для пользователя. В чем преимущество System.Net.Mail ? Возможность асинхронного запуска (client.SendAsync)? Ну при том что в .Net с многопоточностью проблем нет, можно и CDO-отправку в отдельном потоке запустить, если уж это критично с т.зр. стабильности приложения (чтоб не стопорилось пока не отправит). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2015, 23:03 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Дмитрий77Во всех инструкциях все так и пестрит 465-м портом, а 587 если где и упомянается то лишь местами и вскользь. Насколько я понимаю, что 25 порт, что 587 - это стандартные порты для SMTP (без SSL). Проверил, для яндекса 587 порт вполне рабочий. С mail.ru пока не разобрался. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2015, 23:26 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Arm79, >Насколько я понимаю, что 25 порт, что 587 - это стандартные порты для SMTP (без SSL). похоже вы правы. Так понимаю 587 "придумали" как альтернативу 25-му порту (который всех достал из-за спама и т.п.). Но у моего хостинг-провайдера например 587-й порт не работает (обычный SMTP без SSL через 25-й порт). client.EnableSsl = True в System.Net.Mail реализует альтернативный способ "SSL-авторизации". Путем посылки STARTTLS для переключения в зашифрованный канал из незашифрованного. И gmail кстати по этому методу и через 25-й порт работает - только что проверил. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Но классическим SSL-методом все-таки считаю является коннект на (по дефолту) 465-й порт с изначальным стартом SSL-сессии. И этот метод как раз в System.Net.Mail не поддерживается. И это непорядок. А интересно, STARTTLS в CDO поддерживается? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2015, 23:52 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Но вот еще что интересно (касательно gmail): CDO (.item(v_Conf & "smtpusessl") = True): работает через 25-й порт (!!!) и через 465-й порт, через 587-не работает (!)-Error:транспорту не удалось подключиться к серверу System.Net.Mail (client.EnableSsl = True): работает через 25-й порт и через 587-й порт, через 465-й -не работает - Время ожидания операции истекло. Пробую "Почта Windows==Outlook Express"(ssl=true): работает через 25-й,465-й,587-й порты (и gmail и mail.ru) Погуглил, некоторые жалуются на CDO что не работает (сервер требует STARTTLS -Explicit SSL), другие жалуются на System.Net.Mail что не работает (сервер хочет Implicit SSL) http://www.systemnetmail.com/faq/5.3.aspx http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx Получается, по хорошему надо имплементировать оба варианта, чтоб в случае "проблемного" сервера (только Implicit SSL или только Explicit SSL) юзер смог выбрать единственный рабочий для него вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 01:11 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Дмитрий77надо имплементировать оба варианта или поступать проще - не использовать ssl ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 09:14 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Arm79или поступать проще - не использовать ssl Ну, лично я то не против. Ток забыли посоветоваться с gmail, yandex и mail.ru, также с юзерами которые все это пользуют. Плюс куча контор со своими SMTP, которые на секретности конечно помешаны, но при этом могут поддерживать "только Implicit " или "только Explicit/STARTTLS". Были у меня клиенты, которые претензии по этому поводу пытались предъявлять, типа с их SMTP не работает (вероятно у них был SSL +Explicit). Послал, типа моя прога не SMTP-клиент, а серверов по миру навалом -используйте другой. Но если есть возможность быстро имплементировать, почему нет. P.S. Hotmail кажется только Explicit/STARTTLS поддерживает, надо б проверить для интереса. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 10:39 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Дмитрий77P.S. Hotmail кажется только Explicit/STARTTLS поддерживает, надо б проверить для интереса. Не, работает CDO+Implicit SSL по 25-му порту System.Web.Mail +Explicit SSL по 25-му и 587-му порту ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 10:59 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Дмитрий77Дмитрий77P.S. Hotmail кажется только Explicit/STARTTLS поддерживает, надо б проверить для интереса. Не, работает CDO+Implicit SSL по 25-му порту System.Web.Mail +Explicit SSL по 25-му и 587-му порту Всё работает, чуток только надо задействовать мозг и google: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Искренние соболезнования людям, у которых на уровне провайдера отключены все поисковики, включая гугл, яндекс и майлру. Держитесь там. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 11:34 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Ещё есть всякие разные NuGet пакеты, если чо-то там в Net.Mail не заводится, например http://opaquemail.org/ ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 11:39 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Вот ищо: http://www.rebex.net/secure-mail.net/ https://groups.google.com/forum/#!topic/castle-project-users/dtYeAgYSfkY http://www.quiksoft.com/ А вот вообще целый ОГРОМНЫЙ FAQ для System.Net.Mail http://www.systemnetmail.com/allfaq.aspx А тут люди обсуждали уже: http://forums.asp.net/t/939893.aspx?Problem with System Net Mail on GoDaddy А вот и дока: http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 11:44 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
hVostt, Прочел бы тему внимательно :-) Никто не говорит, что не работает gmail... Речь о том, что на порту 465, который gmail поддерживает, smtpclient не работает, так как там реализован режим implicit ssl. А порты 25/587 - это exlicit ssl (через starttls). Цитата по smtpclient авторКласс SmtpClient поддерживает только расширение службы SMTP для Secure SMTP через протокол TLS, определенный в RFC 3207. В этом режиме сеанс SMTP начинается в незашифрованном канале, затем от клиента к серверу дается команда STARTTLS, чтобы переключиться на безопасное соединение с помощью протокола SSL. См. RFC 3207 опубликованный IETF для получения дополнительных сведений. Методом альтернативного подключения называется тот, при котором сеанс SSL устанавливается заранее, до отправки команд протокола. Этот способ подключения иногда называют SMTP/SSL, SMTP через SSL или SMTPS. По умолчанию для него используется порт 465. Этот альтернативный способ подключения с помощью протокола SSL в настоящее время не поддерживается. PS Приведи пример с mail.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 11:45 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Хотя лично я проблем, используя System.Net.Mail, не испытывал ни с одним почтовым сервером. Даже обидно как-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 11:46 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
hVosttХотя лично я проблем, используя System.Net.Mail, не испытывал ни с одним почтовым сервером Arm79PS Приведи пример с mail.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 11:48 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Arm79PS Приведи пример с mail.ru С хабора : AigizKЗнакомая история. Mail.ru то же теперь работает только через SSL. И там та же проблема. Причина из за того что SmtpClient поддерживает только Explicit SSL. Поэтому он должен сперва коннектиться к 25 порту, а потом начинать шифровать. Опять же, при условие что сервер так настроен. А если сервер настроен, чтоб получить сразу SSL/TLS, тогда без бубна отправить письмо не получиться. Вдруг кому пригодится: stackoverflow.com/questions/1011245/how-can-i-send-emails-through-ssl-smtp-with-the-net-framework stackoverflow.com/questions/172811/is-there-a-way-i-can-tell-whether-an-smtp-server-is-expecting-a-client-to-connect/172860#172860 Я говорю лишь о том, что тема в интернетах уже обсосана до дыр. Даже не так. До ДЫР. Ну конечно, стоит ещё разочек помусолить ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 11:51 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Arm79, System.Net.Mail does support "explicit SSL" (also known as "StartTLS" - usually on port 465), but not "implicit SSL" (aka "SMTPS" - usually on port 587). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 11:53 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
hVosttArm79, System.Net.Mail does support "explicit SSL" (also known as "StartTLS" - usually on port 465), but not "implicit SSL" (aka "SMTPS" - usually on port 587). сам то понял, что цитируешь? System.Net.Mail does support "explicit SSL" (also known as "StartTLS" - usually on port 465), but not "implicit SSL" (aka "SMTPS" - usually on port 587) . И при этом ты даешь код, где все работает с портом 587: hVostt Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 12:00 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Arm79И при этом ты даешь код, где все работает с портом 587: Да, и этот код прекрасно работает! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 12:22 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
hVosttArm79И при этом ты даешь код, где все работает с портом 587: Да, и этот код прекрасно работает! а ты попробуй с портом 465 :-) в этой теме как раз таки и говорится, что с 587/25 портом все работает, но в "старом" режиме, с предварительной шифрацией канала, smtpclient не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 12:23 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Arm79, На гуглопочту почта может не отправляться ещё по нескольким причинам: 1. Нужно подтверждение, если почтой давно не пользовались, например, через СМС. 2. Ещё нужно, чтобы был включён в настройках POP (вроде бы). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 12:27 |
|
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
|
|||
---|---|---|---|
#18+
Arm79а ты попробуй с портом 465 :-) в этой теме как раз таки и говорится, что с 587/25 портом все работает, но в "старом" режиме, с предварительной шифрацией канала, smtpclient не работает А ты попробуй телнетом подключиться к гуглопочте Код: powershell 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2015, 12:30 |
|
|
start [/forum/topic.php?fid=20&msg=38851133&tid=1402037]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 177ms |
0 / 0 |