注: この長い道のりを読む時間がない場合は、解決策 (ソースコード付き) がhttp://www.coastrd.com/smtpsにあります。
長い間、SMTP (ポート 25) を使用してリモート メール サーバー (通常は Web サイトのホスティング会社) 経由で電子メールを送信することは、アプリケーションを使用して簡単に行うことができました。TCPポート25を開き、「HELO ...」などを送信します
Google メール サービスを使用してこれを行うには、ポート 465 SMTPS、つまり TLS 暗号化を使用した SMTP を使用することを主張しているため、問題が発生します。
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認証エラー(gmail smtpサーバー経由でメールを送信)
これを正しく理解している場合、C++ コードに TLS 暗号化を実装し、すべてのハンドシェイクとネゴシエーションを完了する必要がありますか?
C# の質問から:
c ++でgmail smtp(セキュアレイヤー)でメールを送信する
このライブラリはそれを行いません
http://johnwiggins.net/jwsmtp/
追加した:
多くの人は、stunnel をサービスとしてインストールし、SSL 接続を管理するように構成しています。
Stunnel は OpenSSL ラッパーです。OpenSSL にはいくつかのパフォーマンスの問題があります ( http://josefsson.org/gnutls4win/ )
「一部のシステムでは、libgcrypt の初期化に時間がかかります。約 10 秒かかるという報告があります。」
必要なもの: "libeay32.dll" 1.35MB + "libssl32.dll" 310k + "zlib1.dll" 75k
次に、いくつかの商用製品があります。
http://www.chilkatsoft.com/downloads.asp
この製品は、主に Activex (COM) の「dll」として配布されます (DLL を「登録」するには、ユーザーのマシンにインストーラーが必要です。.net のもう 1 つの悪い考えです)。
インストーラーは、「ChilkatMime.dll」1.33Mb、「ChilkatCert.dll」1.26MB、「ChilkatUtil.dll」720k をロードします。開発者は、C/C++/BASIC/Python などを含む任意の言語から呼び出すことができる真の C .dll ライブラリに協力することにまったく関心がありませんでした。彼らの態度を考えると、彼らが作成されたコード ジェネレーターの犠牲になったことは驚くことではありません。ハッカーによって。
安っぽい名前とアートワークを除けば、彼らの製品は手頃な価格ですが、私が試したものは、ポート 465 を使用するように言われたにもかかわらず、ポート 25 に接続しました。
対照的に、Catalyst からの商用オプション:
http://www.catalyst.com/products/sockettools/secure/library/index.html
1/3 の価格でメインのソケット ツール製品のコンポーネントとして利用できるようになりました。これらのツールは一流です。はい、あなたはあなたが支払うものを手に入れます。開発者は反応がよく、提案を受け入れます。彼らは、わずか 230k の製品と共に出荷できるスタンドアロンの .dll を含む、すべての種類の dll を提供しています。商用ソリューションの場合、彼らは圧倒されます。
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 は、わずか 1MB (完全なコンパイル) で C スタイルの .dll を使用して SSL/TLS トンネルを容易にするオープン ソース ソリューションです。ソースが利用可能であるため、必要なコンポーネントだけを含むバージョンの dll をコンパイルすることができます。
http://www.cs.auckland.ac.nz/~pgut001/cryptlib/download.html
ライブラリをすぐに動作させ、MIME ダイアログについて尋ねていたにもかかわらず、作者は非常に反応が良かったです。330ページのマニュアルがあります!ありがとうございました。
このライブラリは MTA (メール転送エージェント) ではないため、上記の MIME 会話を作成する必要がありますが、無料です!
ソース コードは http://www.coastrd.com/smtpsで入手できます。