【发布时间】:2023-03-15 11:32:01
【问题描述】:
在我的 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,以防万一,我的联系人模型扩展了一个无表的 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
【问题讨论】:
-
这似乎是一个很常见的问题stackoverflow.com/questions/2421234/… - 我似乎仍然无法解决它
标签: ruby-on-rails