Rubyのmail gemを使う

  • 1
    いいね
  • 1
    コメント

はじめに

この記事は、SLP_KBITその2 Advent Calendar 2016 - Qiitaの20日目の記事です。
SLP_KBIT Advent Calendar 2016 - Qiitaの21日目にも、なんかしら記事を書く予定ですので良かったらそちらも読んでくださいな。頑張ってネタ作ります。(当日中に出せばきっと遅刻じゃないよね!)

それじゃそろそろ本題へいきますか。

最近諸事情ありまして、RubyでGmailのメアドからメールを送りたいなぁってなりました。いろいろ調べてやってみたのでそれを書きたいなぁと思います。
というわけで、以下Gmailを例にして書いていきます。
一応送信できることは確認していますが、間違えてることがあったら教えてください!

mail gem

Rubyのmailというgemを使ってメールを送ることができるみたいです。
GmailのAPIを使うことも考えましたが、なんかむずそうサクッと送信だけしたかったのでmail gemを使うことにしました。

$ gem install mail
これでインストールできます。

メールを作る

メールを作ります。

mail.rb
require 'mail'
mail = Mail.new do
    from     '送信元メールアドレス'
    to       '送信先メールアドレス'
    subject  '件名'
    body     '本文'
end

メールの送信情報

メールの送信情報を決めます。

mail.rb
options = { :address               => 'smtp.gmail.com',
            :port                  => 587,
            :domain                => 'gmail.com',
            :user_name             => '送信元メールアドレス',
            :password              => 'パスワード',
            :authentication        => :plain,
            :enable_starttls_auto  => true  }

メールの送信

メールの送信をします。

mail.rb
mail.charset = 'utf-8'
mail.delivery_method(:smtp, options)
mail.deliver

実行

プログラムを実行します。
$ ruby mail.rb
メールが送信されると思います。

Gmailの場合

Gmailを用いる場合、初めて送信しようとした時に、安全性の低いアプリからのアクセスを有効にしないといけません。送信元のメールアドレス対して
「ブロックされたログインについてご確認ください」
という件名のメールが届きます。
本文中のリンクからアクセスを許可することで、晴れてメールを送ることができるようになります。

最後に

今回はmail gemを使ってメールを送る方法について簡単に書きました。
ただ、Gmailに関しては、可能であればAPIを使用した方が良いかと思います。
安全性の低いアプリからのアクセスを有効にしないといけないですし、ラベルや下書きの作成、修正、削除など、送受信以外のこともできるようです。

この投稿は SLP_KBITその2 Advent Calendar 201620日目の記事です。