コマンドラインからGmailのSMTPを使ってメールを送信する
chakemiです。引き続きネットワークのお勉強です。 本日は、コマンドラインからGmailのSMTPサーバにログインしてメールを送信してみたいと思います。
SMTP(Simple Mail Transfer Protocol)はサーバークライアント間のSMTPセッション上でコマンド・応答をやり取りする、対話型のプロトコルでネットワークのお勉強にはもってこいです。
メールサーバを立ち上げた時なんかもtelnetを使用して動作確認したりします。 本日は手頃のメールサーバが無かったため、Gmailを利用してみました。
なので、今回はCentOSでOpenSSLを利用しました。 また、SMTP認証に必要なbase64でエンコードした文字列をPHPで生成しときます。
1 2 3 4 |
|
※ユーザー名が[email protected] パスワードがpassword の時
では、opensslコマンドでs_clientオプションを使ってTLSでサーバと接続します。
1 2 3 4 5 6 7 |
|
250で接続成功の応答が返ってきたら セッションの開始HELOコマンドを送信ですが、このコマンドは古いため、拡張コマンドであるEHLOコマンドを使用します。
1 2 3 4 5 6 7 |
|
返ってきた情報から、このサーバで利用できる拡張サービスがわかります。
ここでは、認証にauth plainを使用します。
1 2 3 |
|
認証が成功したらAcceptedが返ってきます。 base64で生成した文字列に問題があると「デコードできない」や「認証失敗」といったメッセージが返ってきますので見直してください。
ここからは、通常のtelnetで接続したときを同様
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
無事、メールが届いていたら成功