RailsでGmailにメールを送る
RailsでGmailを使ってメール送付を行う方法についてのメモ。
最初に、config/environments/development.rbの編集
16 # Don't care if the mailer can't send. 17 config.action_mailer.raise_delivery_errors = true 18 config.action_mailer.delivery_method = :smtp 19 config.action_mailer.smtp_settings = { 20 :enable_starttls_auto => true, 21 :address => 'smtp.gmail.com', 22 :port => '587', 23 :domain => 'smtp.gmail.com', 24 :authentication => 'plain', 25 :user_name => ENV['DEV_MAIL_USER'], 26 :password => ENV['DEV_MAIL_PASSWD'] 27 }
続いて
$ rails g mailer InviteGroupMailer send_invite_mail
次に生成されたメールクラスの編集
1 class InviteGroupMailer < ActionMailer::Base 2 default from: "testMail@example.com" 3 4 # Subject can be set in your I18n file at config/locales/en.yml 5 # with the following lookup: 6 # 7 # en.invite_group_mailer.send_invite_mail.subject 8 # 9 def send_invite_mail 10 @greeting = "Hi" 11 12 13 mail to: "test@gmail.com" ,subject: "test mail" 14 end 15 end
メールテンプレートの編集。拡張子が.html.erbだとHTMLメール。.text.erbだとテキストメール。
今回はテキストメールで「 app/views/invite_group_mailer/send_invite_mail.text.erb」を編集
1 InviteGroupMailer#send_invite_mail 2 3 <%= @greeting %>
デフォルトのままにして取りあえず送付されるかを確認する。
$ rails c
irb(main):001:0> InviteGroupMailer.send_invite_mail.deliver
Rendered invite_group_mailer/send_invite_mail.text.erb (1.1ms)Sent mail to *****@******* (3594.6ms)
Date: Wed, 27 Nov 2013 16:47:59 +0900
From: testMail@example.com
To: test@gmail.com
Message-ID: <5295a3af68707_3d493ff24d8606d0195f9@*************l>
Subject: test mail
Mime-Version: 1.0
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: 7bitInviteGroupMailer#send_invite_mail
Hi
・・・・・・・・・・
・・・・・・・・・・
TOで指定したアドレスにメールが送られていれば、問題なし!
追記 2013/11/28
toを引数で渡す場合
9 def send_invite_mail(to_mail) 10 @greeting = "Hi" 11 @group_join_url = "http://hogehoge.com/" 12 13 mail to: to_mail ,subject: "Invite life_photo group." 14 end
InviteGroupMailer.send_invite_mail('hogehoge@gmail.com').deliver