В моем приложении rails есть контактная форма, позволяющая пользователям отправлять электронную почту на мою учетную запись gmail.
Проблема 1
Я использую ту же учетную запись gmail для отправки электронных писем, что иЯ использую их для получения, и поэтому, когда я нажимаю кнопку «Ответить», gmail настраивает для себя новое электронное письмо ...
Мой почтовик выглядит так:
class Notification < ActionMailer::Base
default :to => ENV['GMAIL_USER']
def hello(contact)
mail(
:from => contact[:email],
:return_path => contact[:email],
:subject => "[My Website] << #{contact[:subject]}",
:body => contact[:body] )
end
end
У меня сложилось впечатление, что установка :return_path => contact[:email]
гарантирует, что gmail будет знать, кому отправлять ответ .... Очевидно, я ошибаюсь.Кто-нибудь знает, как это исправить?
Задача 2
В большинстве учебных пособий action_mailer я настроил свой почтовый метод, используя :from => contact.email
вместо :from => contact[:email]
, например так:
def hello(contact)
@contact = contact
mail(
:from => contact.email,
:return_path => contact.email,
:subject => "[My Website] << #{contact.subject}",
:body => contact.body
)
end
Но когда я делаю это таким образом, я получаю следующее сообщение об ошибке:
undefined method `email' for #<ActiveSupport::HashWithIndifferentAccess:0xdde82f0>
Кто-нибудь знает, что рекомендуемый подход не работает для меня.
Приложение
FWIW, в случае, если это помогает, моя модель контактов расширяет модель table_ active_record, так как я не хочу использовать базу данных, но хочу иметь оценки, чтобы она выглядела так:
#contact.rb
class Contact < Tabless
column :name, :string
column :email, :string
column :body, :text
column :subject, :string
# validations go here
end
# tabless.rb
class Tabless < ActiveRecord::Base
# create an array of columns
def self.columns()
@columns ||= [];
end
# add new column to columns array
def self.column(name, sql_type = nil, default = nil, null = true)
columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s,
default,
sql_type.to_s,
null)
end
# override the save method to prevent exceptions
def save(validate = true)
validate ? valid? : true
end
end