我正在处理来自 Sinatra Jump Start 的联系表格,并试图弄清楚为什么“发件人”总是与我使用的 :user_name 相同的 gmail 帐户。我有一个 Heroku 版本,它也总是一样的:from
。我的目标是让有姓名、电子邮件和消息的小联系表发送到接收电子邮件,“发件人”将是发件人的姓名和电子邮件。
我想这可能是因为本地版本,但在 Heroku 上的结果是一样的。设置:user_name
最终作为“发件人”我做错了什么,有什么想法吗?
那是:from => params[:name] + "<" + params[:email] + ">"
不是不再正确,我正在使用的书不是太旧。
这是我的contact.slim
表单的样子:
p You can contact me by filling in the form below:
form class="contact" action="/contact" method="POST"
p
label for="name" Name:
input type="text" name="name"
p
label for="email" Email:
input type="text" name="email"
p
label for="message" Your Message:
textarea name="message"
input type="submit" value="Send Message"
这是我的send_message
:
def send_message
Pony.mail(
# this always comes back as the same gmail.account I'm using for the :user_name
:from => params[:name] + "<" + params[:email] + ">",
:to => 'mygmail@gmail.com',
:subject => params[:name] + " from #{params[:email]} has contacted you ",
:body => params[:message],
:via => :smtp,
:via_options => {
:address => 'smtp.gmail.com',
:port => '587',
:enable_starttls_auto => true,
:user_name => 'mygmail@gmail.com',
:password => 'mypassword',
:authentication => 'plain',
:domain => 'localhost.localdomain'
})
end
还有我的邮政路线处理程序main.rb
post '/contact' do
send_message
flash[:notice] = "Thank you for your message. We'll be in touch soon."
redirect to("/")
end
然后,当我尝试使用 Heroku 时,我有这个main.rb
:
configure :development do
# for the local MySQL db
DataMapper.setup(:default, 'mysql://root:admin@localhost/sinatra_jumpstart')
set :email_address => 'smtp.gmail.com',
:email_user_name => 'mygmail@gmail.com',
:email_password => 'mypassword',
:email_domain => 'localhost.localdomain'
end
configure :production do
# for Heroku
DataMapper.setup(:default, ENV[ 'DATABASE_URL' ])
set :email_address => 'smtp.sendgrid.net',
:email_user_name => ENV['SENDGRID_USERNAME'],
:email_password => ENV['SENDGRID_PASSWORD'],
:email_domain => 'heroku.com'
end
更新:似乎我的目标是能够回复,有一个:reply_to
选项可以传递params[:email]
给,但这仍然让我想知道为什么“发件人”正确显示名称(来自params[:name]
),但忽略params[:email]
对于“发件人”电子邮件地址,而是显示我的:user_name
电子邮件:via_options
。