1.使用Rails內建的Action Mailer
因為Rails有內建Action Mailer,所以這個方法比較直接,只要更改Action Mailer的smtp設定
# enviroments/production.rb 或是 enviroments/development.rb 加上
ActionMailer::Base.smtp_settings =
{ :port => 587,
:address => 'smtp.mailgun.org',
:user_name => '[email protected]',
:password => 'mailgun-smtp-password',
:domain => 'your.mailgun.domain',
:authentication => :plain }
ActionMailer::Base.delivery_method = :smtp
再來新增 mailers/user_mailer.rb
# mailers/user_mailer.rb
class UserMailer < ActionMailer::Base
default from: " [email protected]"
def confirm(email, params)
@customer_name = params[:customer_name]
@customer_phone = params[:customer_phone]
@customer_email = params[:customer_email]
@content = params[:content]
@website_name = params[:website_name]
mail to: email, subject: "ELIVING 客戶留言通知信"
end
end
再來在views/user_mailer/confirm.text.erb編輯郵件的template
假設為:
HI <%= @website_name %> 您好,有客戶在您的網站留言
相關資訊如下:
* * *
客戶名稱 / <%= @customer_name %>
聯絡電話 / <%= @customer_phone %>
電子郵件 / <%= @customer_email %>
服務內容 / <%= @content %>
* * *
如此要發送郵件時只要在controller裡面呼叫:
UserMailer.confirm(@website.email, inquiry_params).deliver
2.使用mail gem
這個也是使用smtp的方法,只是不使用Rails內建的Action Mailer
首先Gemgile加上 gem ‘mail’,然後bundle安裝
在 enviroments/production.rb 或是 enviroments/development.rb 加上
# enviroments/production.rb 或 enviroments/development.rb
Mail.defaults do
delivery_method :smtp, {
:port => 587,
:address => "smtp.mailgun.com",
:user_name => "",
:password => "",
}
end
在controller呼叫以下指令,就可以發送mail了
mail = Mail.deliver do to '[email protected]' from '[email protected]' subject 'Hello'
text_part do
body 'Testing some Mailgun awesomness'
end
end
3.使用mailgun gem
這個是使用mailgun的gem去直接呼叫mailgun的api
首先Gemgile加上 gem ‘mailgun’,然後bundle安裝
在 enviroments/production.rb 或是 enviroments/development.rb 加上
# enviroments/production.rb 或 enviroments/development.rb
# Initialize your Mailgun object:
Mailgun.configure do |config|
config.api_key = 'your-api-key'
config.domain = 'your-mailgun-domain'
end
在controller呼叫以下指令,就可以發送mail了
@mailgun = Mailgun()
parameters =
{ :to => "[email protected]",
:subject => "missing tps reports",
:text => "yeah, we're gonna need you to come in on friday...yeah.",
:from => "[email protected]" }
@mailgun.messages.send_email(parameters)
4.使用rest-client gem
這個是使用rest-client去呼叫mailgun api
首先Gemgile加上 gem ‘rest-client’,然後bundle安裝
然後在要發送的controller執行以下指令
RestClient.post
"https://api:key-3ax6xnjp29jd6fds4gc373sgvjxteol0"
"@api.mailgun.net/v2/samples.mailgun.org/messages",
:from => "Excited User <[email protected]>",
:to => "[email protected], [email protected]",
:subject => "Hello",
:text => "Testing some Mailgun awesomness!"
只是要記得將 api:後面的key換成自己的 還有將samples.mailgun.org換成自己的domain
參考資料:
https://github.com/HashNuke/mailgun http://documentation.mailgun.com/quickstart-sending.html