有効なGMailユーザーIDとパスワードを使用してメールを送信するアプリケーションを作成中です。
Windows XPコマンドラインで、465ポートでsmtp.gmail.com
にtelnetで接続すると、何も表示されません。何も表示されません。 title Telnet smtp.gmail.com
がカーソルで開きますEHLO
または通常のSMTPハンドシェイクコマンドを入力すると、プロンプトが閉じます。
何が間違っているのか、どこで起こっているのかがわかりません。 587に接続しようとしましたが、telnetでまったく接続しません。私が何か間違ったことをしている場合、誰でも明確にしていただけますか?
LinuxまたはOSxを使用して、Sorinが推奨したことを行いますが、代わりにポート465を使用します。 25は汎用SMTPポートですが、GMailが使用するものではありません。また、-starttls smtpを使用したいとは思わない
openssl s_client -connect smtp.gmail.com:465
SSLセッションと応答に関する多くの情報を取得する必要があります。
220 mx.google.com ...
入力する
HELO smtp.gmail.com
受け取るもの:
250 mx.google.com at your service
そこからは、Gmailには実際に自分が所有するアカウントからのものと思われるメールのみを送信するように保護されているため、SMTPメッセージの送信ほど単純ではありません。 「Helo」と入力する代わりに、「Ehlo」を使用します。私はSMTPについてあまり知らないので、その違いを説明することはできず、あまり研究する時間もありません。おそらく、もっと知識のある人が説明できるでしょう。
次に、「auth login」と入力すると、次のメッセージが表示されます。
334 VXNlcm5hbWU6
これは、基本的にBase 64でエンコードされたWordの「ユーザー名」です。 this one などのBase 64エンコーダーを使用して、ユーザー名をエンコードして入力します。次に要求されるパスワードについても同じことを行います。見るべき:
235 2.7.0 Accepted
これでログインできました。
OSxまたはLinux端末を使用している場合は、もう1つ克服する必要があります。 「ENTER」キーを押すだけでは、SMTPがメッセージを終了する必要のあるCRLFになりません。 「CTRL + V + ENTER」を使用する必要があります。したがって、これは次のようになります。
^M
.^M
250 2.0.0 OK
OSX '端末の場合:
openssl s_client -connect smtp.gmail.com:25 -starttls smtp
Gmailでは、サーバーとのSMTP通信を暗号化する必要があります。ポート465でGmailのサーバーへの接続を開いていますが、残念ながら、Gmailでは接続にSTARTTLS/SSL暗号化を使用する必要があるため、プレーンテキストで通信することはできません。
端末からセッションを開始:
openssl s_client -connect smtp.gmail.com:25 -starttls smtp
応答の最後の行は「250 SMTPUTF8」である必要があります
ログインの開始
auth login
これにより、「334 VXNlcm5hbWU6」が返されます。
ユーザー名を入力
ユーザー名をbase64エンコードで入力します(例:echo -n 'your-username' | base64
)
これにより、「334 UGFzc3dvcmQ6」が返されます。
パスワードの入力
Base64エンコーディングでパスワードを入力します(例:echo -n 'your-password' | base64
)
成功
「235 2.7.0 Accepted」と表示され、正常にログインしています。
Jadaaih、CURL経由で送信SMTPに接続できます- Curl開発者コミュニティへのリンク 。
これは Curl Email Client source です。
tcp/465は当初、最初にSSL(およびより新しいTLS)層を確立することを目的としており、内部ではクリアテキストプロトコルまたはプレーンオールドプロトコル(ここではsmtp)を実行します。
tcp/587は、10年以上前にスパマーや大量メール攻撃が開始された当初はデフォルトのtcp/25ポートの代わりとして使用されていましたが、変なISPがデフォルトのポートにアウトバウンド(そのtcp/25として)自身の顧客(AOL)が電子メール/スパムを大量に送信することを拒否したが、AOLインターネット接続からメールを送信するために必要な代替メールアカウントとメールプロバイダーを使用する必要があるAOL顧客、したがって、彼らはまだtcp/587に接続し、その上で簡単なsmtpを実行できました。
STARTTLSでsmtpを実行する方法の対処法は、2つのよく知られている元のプレーンテキストtcp/25およびtcp/587ポートを使用し、最初のクリアテキスト接続が成功した場合にのみ、TLSレイヤーを開始することです(したがってSTARTTLS)そこから、そのポイントから先に安全な接続を持ちます。
これらの種類のデバッグについては、たとえばコマンドラインツールを使用して、たとえばWindowsの場合、歴史的なblatコマンドラインメーラー(smtp)があります。これは今日までTLS(STARTTLS)を実行できないため、メールを送信します。
さらに、次のようなより多くの機能と機能を備えたフリーウェアとオープンソースソフトウェアが多数あります。
smtpクライアント:mailsend @ googlecode http://code.google.com/p/mailsend/
smtpクライアント:msmtp @ sourceforge(以下のmpopに関連) http://msmtp.sourceforge.net/
pop3クライアント:mpop @ sourceforge http://mpop.sourceforge.net/
Lifehackerでこの投稿を確認してください。 Geek to Live:fetchmailでGmailをバックアップしてください コマンドラインプログラムを使用します。それが役立つかどうかを確認してください。ところで、他の多くの素敵な選択肢があるのに、なぜコマンドラインを使用しているのですか?
これを試して:
telnet smtp.gmail.com 587
gmailは暗号化された接続を使用します。したがって、接続を確立した後でも、メールを送信することはできません。暗号化の管理は少し複雑です。代わりにopensslを使用してみてください。
以下のスレッドが役立つはずです-