LoginSignup
11

More than 5 years have passed since last update.

Rubyのmail gemを使う

Posted at

はじめに

この記事は、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を使用した方が良いかと思います。
安全性の低いアプリからのアクセスを有効にしないといけないですし、ラベルや下書きの作成、修正、削除など、送受信以外のこともできるようです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11