Macで開発中のsendmail
を使用して電子メールを送信するためにPonyを使用するヘルパーメソッド、または生産時にsendgrid
からHeroku
を経由して使用するヘルパーメソッドです。これは確実に動作し、私のテストメールはすべて私の様々なGmailアドレスに送信されます。
from
のアドレスが無効で、Googleがそのアドレスにスパムとしてフラグを立てている可能性があります。また、Content-Type
ヘッダーを設定していないことに注意してください。通常は私のケースではtext/html
です。
def send_email(a_to_address, a_from_address , a_subject, a_type, a_message)
begin
case settings.environment
when :development # assumed to be on your local machine
Pony.mail :to => a_to_address, :via =>:sendmail,
:from => a_from_address, :subject => a_subject,
:headers => { 'Content-Type' => a_type }, :body => a_message
when :production # assumed to be Heroku
Pony.mail :to => a_to_address, :from => a_from_address, :subject => a_subject,
:headers => { 'Content-Type' => a_type }, :body => a_message, :via => :smtp,
:via_options => {
:address => 'smtp.sendgrid.net',
:port => 25,
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => ENV['SENDGRID_DOMAIN'] }
when :test
# don't send any email but log a message instead.
logger.debug "TESTING: Email would now be sent to #{to} from #{from} with subject #{subject}."
end
rescue StandardError => error
logger.error "Error sending email: #{error.message}"
end
end