我正在处理来自Sinatra Jump Start的联系表单,并试图找出为什么“From”始终与我使用的同一个gmail帐户:user_name。我有一个Heroku版本,它也总是相同的:from
。我的目标是使用小型联系表单,其中有姓名,电子邮件和消息发送到接收电子邮件,“发件人”将是发件人的姓名和电子邮件。
我想也许这是因为本地版本,但它与Heroku的结果相同。 :user_name
的设置最终为“From”我做错了什么想法?
: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
的{{1}}电子邮件。< / p>
答案 0 :(得分:0)
这个答案来自一个站点讨论。
您正在从您的网页发送表单,因此发件人就是您自己。 如果您打开发件人电子邮件软件(使用html邮件功能?),并且用户从那里发送它将有他们的电子邮件地址。
当用户从其他用户收到电子邮件并使用“回复”时,在论坛中会发生这种情况。然后将该电子邮件发送给论坛管理员。通常会有一条消息说明“不要回复此消息,但在论坛消息部分中这样做”。