シェルスクリプトマガジン

第7回 DMを自動送信する(STARTTLS編)

 17行目で、応答メッセージを調べています。「expect」の「\”」で囲んだ文字列をキーワードとして、応答メッセージがその文字列に一致するかどうかを見ています。この文字列には正規表現が使えます。一致した場合に、次の処理に移ります。18行目では、メッセージを送信しています。「send」の後ろの「\”」で囲んだ文字列が送信されます。[Enter]キーの入力は「\n」で表現します。このような応答確認、送信を繰り返しています。

 opensslコマンドを実行した時点で、SMTPセッションが開始されています。よって、SMTPコマンドを送信してメールを送ります。18行目の「auth plain 認証情報」でログインできます。ログインできた場合は「235 2.7.0 Accepted」が返ってきます。20行目で送信元のメールアドレスを、22行目で送信先のメールアドレスを送っています。24行目の「data」より下が送信メッセージのヘッダーと本体になります。

 26行目がヘッダーに含まれる送信元のメールアドレス、27行目が送信先のメールアドレスです。28行目でタイトルとエンコーディングのヘッダーおよび、メッセージ本文を送っています。29行目の「.」がメッセージの終了を表していて、送信後にメールが送信先のメールアドレスに送られます。

 「250 2.0.0 OK」が返ってくれば、メール送信完了です。31行目の「quit」で対話型のopensslコマンドを終了しています。32行目で、送信ログを「send.log」として保存しています。