OpenSSLを使ってGmailを送ってみる

OpenSSLを使ってGmailを送ってみる

TeraTermを使ってマクロを使ってファイルを作成後に、ファイルができたかの有無を判定して結果をGmailで送信するマクロを作りたくて何か良い方法はないかと模索していましたがOpenSSLから送信できましたので備忘録として。

OpenSSLのインストール

OpenSSLをWindows10にインストールするために以下のサイトを参考にさせていただきました。

OpenSSLをWindows10にインストールする (katsubemakito.net)

Gmailの基本情報

以下から確認することができます。

http://mail.google.com/support/bin/answer.py?answer=78799

受信メール(IMAP)サーバーimap.gmail.comSSL を使用する: はいポート: 993
送信メール(SMTP)サーバーsmtp.gmail.comSSL を使用する: はい
TLS を使用する: はい(利用可能な場合)
認証を使用する: はい
SSL のポート: 465
TLS / STARTTLS のポート: 587
氏名または表示名氏名
アカウント名、ユーザー名、メールアドレスメールアドレス
パスワードGmail のパスワード

※注意

ユーザー名とパスワードはBase64に変換して記述する必要があります。
以下の変換サイトから変換できます。
http://www.ahref.org/app/base64/base64.cgi

変換前変換後
ユーザー名test@gmail.comdGVzdEBnbWFpbC5jb20=
パスワードPasswordUGFzc3dvcmQ=

Opensslから送信する

以下入力するコマンドになります
ここで使用しているtest@gmail.comとPasswordはご自身で使用している物に変更してください。
(もちろんBase64で変更したものも)

  1. openssl s_client -connect smtp.gmail.com:465
  2. EHLO smtp.gmail.com
  3. AUTH LOGIN
  4. dGVzdEBnbWFpbC5jb20=
  5. UGFzc3dvcmQ=
  6. mail from:<test@gmail.com>
  7. rcpt to: <test@gmail.com>
  8. DATA
  9. from:test@gmail.com
  10. to:test@gmail.com
  11. Subject:test
  12. test mail
  13. .
  14. quit

openssl s_client -connect smtp.gmail.com:465

C:\Users>openssl s_client -connect smtp.gmail.com:465
CONNECTED(000001AC)
—-大量のメッセージが表示される—-
read R BLOCK
220 smtp.gmail.com ESMTP 10sm1214566pgl.42 – gsmtp

EHLO smtp.gmail.com

EHLO smtp.gmail.com
250-smtp.gmail.com at your service, [36.13.85.71]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8

AUTH LOGIN

AUTH LOGIN
334 VXNlcm5hbWU6

dGVzdEBnbWFpbC5jb20=

dGVzdEBnbWFpbC5jb20=
334 UGFzc3dvcmQ6

UGFzc3dvcmQ=

UGFzc3dvcmQ=
235 2.7.0 Accepted

mail from:<test@gmail.com>

mail from:<test@gmail.com>
250 2.1.0 OK

rcpt to: <test@gmail.com>

rcpt to: <test@gmail.com>
250 2.1.5 OK

DATA

DATA
354 Go ahead
from:test@gmail.com 差出人
to:test@gmail.com 宛先
Subject:test 件名
test mail 本文
. 入力終了
250 2.0.0 OK

quit

quit
221 2.0.0 closing connection
read:errno=0