Gmail経由で簡単なSMTPコマンドを使用してメールを送信するには?

教育目的のために、SMTPの基本的で単純なルールを使用して、SMTPサーバーを介して電子メールを送信する必要があります。

私はsmtp4devを使ってそれを行うことができました。私はtelnet localhost 25とコマンドを以下のようにしています:

私はGmailのSMTPサーバーを使用して、同じことをしたい。ただし、認証とTLSが必要です。私はGmailのためにそれを行う方法を理解できません。 telnet smtp.gmail.com 587のスクリーンショットです:

STARTTLSコマンドに関するWikipedia’s articleを含む多くのリンクを検索して見つけました。しかし、私はTLSを使用することはできず、コマンドラインを使ってGmailのSMTPサーバーに認証することもできません(またはプログラミング言語で自分自身でコマンドを送信することもできます)。誰も助けることができますか?

ベストアンサー
Gmailを介して送信するには、暗号化された接続を使用する必要があります。これはtelnetだけでは不可能ですが、opensslのようなツールを使うことができます

opensslのstarttlsオプションを使用して接続して、プレーン接続を暗号化に変換するか…

openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf -ign_eof

またはssl sockectに直接接続する…

openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof

EHLO localhost

その後、base64でエンコードされたユーザー名/パスワードを使用してサーバーに認証します

AUTH PLAIN AG15ZW1haWxAZ21haWwuY29tAG15cGFzc3dvcmQ =

コマンドラインからこれを取得する:

perl -MMIME::Base64 -e 'print encode_base64("\000myemail\@gmail.com\000mypassword")' 
AG15ZW1haWxAZ21haWwuY29tAG15cGFzc3dvcmQ=

あなたの例のように “mail from:”を続けてください

セッション例:

openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof
[... lots of openssl output ...]
220 mx.google.com ESMTP m46sm11546481eeh.9
EHLO localhost
250-mx.google.com at your service, [1.2.3.4]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH
250 ENHANCEDSTATUSCODES
AUTH PLAIN AG5pY2UudHJ5QGdtYWlsLmNvbQBub2l0c25vdG15cGFzc3dvcmQ=
235 2.7.0 Accepted
MAIL FROM: <gryphius-demo@gmail.com>
250 2.1.0 OK m46sm11546481eeh.9
rcpt to: <somepoorguy@example.com>
250 2.1.5 OK m46sm11546481eeh.9
DATA
354  Go ahead m46sm11546481eeh.9
Subject: it works

yay!
.
250 2.0.0 OK 1339757532 m46sm11546481eeh.9
quit
221 2.0.0 closing connection m46sm11546481eeh.9
read:errno=0

転載記事の出典を記入してください: Gmail経由で簡単なSMTPコマンドを使用してメールを送信するには? - コードログ