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