Примечание: если у вас нет времени, чтобы прочитать этот длинный путь, решение (с исходным кодом) здесь: http://www.coastrd.com/smtps.
Долгое время отправка электронной почты через SMTP (порт 25) через удаленный почтовый сервер (обычно в хостинг-компании) была простой в применении. Откройте TCP-порт 25, отправьте "HELO ..." и т. Д.
Чтобы сделать это с помощью службы электронной почты Google, у меня возникает проблема, потому что они настаивают на использовании порта 465 SMTPS, т.е. SMTP с шифрованием TLS:
http://en.wikipedia.org/wiki/Transport_Layer_Security#How_it_works
При поиске способа сделать это с помощью языка, такого как C ++ или разновидности базового, я наткнулся на:
http://forums.realsoftware.com/viewtopic.php?f=2&t=29542
http://forums.realsoftware.com/viewtopic.php?f=2&t=26959&p=162671#p162671
и вопрос по Python:
Ошибка аутентификации Python SMTP в Gmail (отправка электронной почты через SMTP-сервер Gmail)
Если я правильно понимаю, мне понадобится реализовать шифрование TLS в моем коде C ++ вместе со всеми рукопожатиями и согласованием?
Из вопроса C #:
отправка электронной почты с помощью Gmail SMTP (безопасный уровень) в C ++
Эта библиотека не делает этого
http://johnwiggins.net/jwsmtp/
ДОБАВЛЕНО:
Многие люди просто устанавливают stunnel в качестве службы, а затем настраивают его для управления SSL-соединением
http://www.stunnel.org/about/
Stunnel - это оболочка OpenSSL. OpenSSL имеет некоторые проблемы с производительностью (http://josefsson.org/gnutls4win/)
"На некоторых системах инициализация libgcrypt занимает много времени, были сообщения, что это может занять около 10 секунд."
и требует: "libeay32.dll" 1,35 МБ + "libssl32.dll" 310 КБ + "zlib1.dll" 75 КБ
Тогда есть пара коммерческих продуктов:
http://www.chilkatsoft.com/downloads.asp
Этот продукт в основном поставляется как Activex (COM) «dll» (требующий установщика на машине пользователя, чтобы «зарегистрировать» dll - еще одна плохая идея .net).
Установщик загружает "ChilkatMime.dll" 1,33 МБ, "ChilkatCert.dll" 1,26 МБ, "ChilkatUtil.dll" 720 КБ. Разработчики не были заинтересованы в сотрудничестве с настоящей библиотекой C .dll, которую можно было вызывать с любого языка, включая C / C ++ / BASIC / Python и т. Д. И т. Д. Учитывая их отношение, я не удивлен, что они стали жертвами созданных генераторов кода. хакерами.
Помимо сырного названия и художественных работ, их продукты по разумным ценам, но тот, который я попробовал, подключился к порту 25, несмотря на то, что мне сказали использовать порт 465.
В отличие от коммерческого варианта с катализатором:
http://www.catalyst.com/products/sockettools/secure/library/index.html
теперь доступен в качестве компонента основного инструмента для инструментов с торцевыми головками за 1/3 цены. Эти инструменты первого класса! да, вы получаете то, за что платите. Разработчики отзывчивы и открыты для предложений. Они предлагают ВСЕ ароматы DLL, в том числе автономные .dll, которые могут быть поставлены с вашим продуктом, который всего 230k! Для коммерческих решений они выигрывают руки вниз.
Соединение SLL / TLS может быть установлено явно (как только рукопожатие начинает наступление) или неявно (после рукопожатия с использованием STARTTLS и т. Д.)
CodeIgniter, например, неявный (как и опции в Python, asp, php и т. Д.)
http://codeigniter.com/forums/viewthread/84689/
Как только соединение установлено, существует «туннель», через который может проходить сеанс MIME:
"EHLO " + sLocalHost + CRLF
"MAIL FROM: " + sMailFrom + CRLF
"RCPT TO: " + "me@mydomain.com" + CRLF
"DATA: Testing, Testing xyz" + CRLF
CRLF + "." + CRLF
"QUIT"
с обычными ответами с сервера.
Некоторые языки обрабатывают связь MIME для вас (инструменты сокетов, codeigniter и т. Д.), И вы просто вводите тему, текст и адрес электронной почты, делая его очень простым в использовании
CryptLib - это решение с открытым исходным кодом, которое упрощает туннель SSL / TLS с DLL-файлом стиля C размером всего 1 МБ (полная компиляция). Поскольку исходный код доступен, можно скомпилировать версию библиотеки DLL с необходимыми компонентами, которых должно быть несколько меньше.
http://www.cs.auckland.ac.nz/~pgut001/cryptlib/download.html
Автор был очень отзывчивым, хотя я сразу же заставил библиотеку работать и спрашивал о диалоге MIME. Существует 330 страниц руководства! Спасибо.
Эта библиотека не является MTA (агентом пересылки почты), поэтому вы должны написать выше разговор MIME, но это БЕСПЛАТНО!
исходный код доступен здесь:
http://www.coastrd.com/smtps.