Пони не отправляет электронную почту на адрес электронной почты? - PullRequest
2 голосов
/ 27 июля 2011

У меня есть форма заявки, которая запрашивает имя человека и адрес электронной почты.Я сохраняю этот адрес электронной почты в сеансе, чтобы получить доступ к нему после отправки формы.Затем я использую Пони, чтобы отправить письмо с благодарностью / уведомлением человеку, который отправил форму.Однако, хотя он отправляет без проблем на адрес MobileMe, он не отправляется на адрес Gmail.Строка, которую я использую для отправки:

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

Переменная @email определена в обработчике и получает значение из сеанса.

Есть идеи?

1 Ответ

6 голосов
/ 14 декабря 2011

Вот вспомогательный метод, который я использую, который использует Pony для отправки электронной почты, используя sendmail при разработке на моем Mac или через sendgrid на Heroku при работе.Это работает надежно, и все мои тестовые письма отправляются на мои различные адреса электронной почты.

Возможно, ваша проблема в том, что ваш 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
...