Perlでアプリパスワードを用いたGmail経由のメール送信

スポンサーリンク

Gmailのメールアドレスとアプリパスワードというパスワードを用いて、Gmail経由でメールを送る方法になります。
事前の設定として、Googleアカウント側の設定を行うだけでよいので、Gmail経由でメールを送る方法としては簡単な方法になります。

スポンサーリンク

Googleアカウント側の設定

PerlでGmail経由でメールを送るため、まず、Googleアカウント側の設定を行う必要があります。
Googleアカウント側の設定を行うことでGmailにアクセスするため、アプリパスワードを取得します。
ここではその方法を簡単に説明します。

  1. Googleアカウントで「セキュリティ」タブから2段階認証の設定を行います。
  2. 2段階認証の設定が完了したら、同様に「セキュリティ」タブの「2段階認証プロセス」のページに移動します。
  3. 下の方に「アプリパスワード」があるので、そこでアプリパスワードの設定を行います。
  4. 生成するデバイスでその他を選択し、任意の名前を付けて、アプリパスワードを取得します。
    補足として、この選択はアプリをカレンダーとかにして、Windowsパソコンを選んでも、結局フルアクセス権を得ることができ、メールを送ることができたので、もしかしたら選択に意味はないかもしれません。

アプリパスワードを設定して、取得できたら作業は終了になります。

Gmail経由でメール送信を行うPerlプログラム

Gmail経由でメール送信を行うPerlプログラムは以下のようになります。

mail.pl

このプログラムは標準入力からヘッダー行を含むメールの内容を受け取り、Gmailを経由してメール送信を行うことができます。
このプログラムのパラメータとして、$user, $pass, $sender, $receiverの4つのパラメータが必要になります。

それぞれのパラメータは
$user: googleアカウント(末尾が@gmail.comになるでしょう)
$pass: 事前の設定で取得したアプリパスワード
$sender: 送信者($userと同様にしても良いかもしれません)
$receiver: 宛先
になります。

プログラムを単純にするためにアプリパスワードが組み込まれているので、アプリパスワードを入れたプログラムは他のユーザーに見られないようにしたほうが良いです。
また、アプリパスワードを別ファイルにし、そのファイルの方を他のユーザーから見られないようにし、そのファイルを読み込んでパラメータに入力しても良いでしょう。

このプログラムはプログラムを単純にするためにエラー処理が一切入っていません。エラー処理を行う方法は様々な方法がありますが、例えば

のようにそれぞれの文を処理することでエラー処理を行うことができます。ただ、上記の文だとエラー文の方に注目が行く気がするので、

のような関数を作ってもいいかもしれません。

このプログラムはNet::SMTP->newでDebug機能がONになっているので、必要がなければ、Debugを0にしてDebug機能をOFFにしてください。

メールのテスト

簡単なメールのテストとしてSenderとReceiverを自分自身に設定して試してみるとよいでしょう。
プログラムは標準入力からメールのヘッダー行と本文を入力することで利用できます。

content.txt

コマンド例

でメールを送信できます。
また、別の方法として、本文の内容にsedコマンドでヘッダー行を追加して

のようにして、1行でメールを送信することもできます。

最後に、Gmailでメールが届いたかどうかを確認にしたらメールのテストは完了で良いでしょう。

参考

Net::SMTP - Simple Mail Transfer Protocol Client - Perldoc Browser