2011-07-27 25 views
2

私は、人名と電子メールアドレスを要求するエントリーフォームを持っています。そのメールアドレスをセッションに保存するので、フォームが送信された後にアクセスできます。それから私はポニーを使って、フォームを提出した人に感謝/通知メールを送ります。ただし、MobileMeのアドレスに問題なく送信しても、Gmailのアドレスには送信されません。ポニーはGmailアドレスに電子メールを送信しませんか?

Pony.mail(:to => "#{@email}", :from => '[email protected]', :subject => "Thanks for entering!", 
:body => "Thank you!") 

@email変数がハンドラ内で定義され、セッションから値を取得します:私は送信するために使用している行があります。

アイデア?

答えて

6

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 
関連する問題