Sinatra with Pony总是收到相同的电子邮件

时间:2015-01-19 03:52:31

标签: email sinatra pony

我正在处理来自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>

1 个答案:

答案 0 :(得分:0)

这个答案来自一个站点讨论。

您正在从您的网页发送表单,因此发件人就是您自己。 如果您打开发件人电子邮件软件(使用html邮件功能?),并且用户从那里发送它将有他们的电子邮件地址。

当用户从其他用户收到电子邮件并使用“回复”时,在论坛中会发生这种情况。然后将该电子邮件发送给论坛管理员。通常会有一条消息说明“不要回复此消息,但在论坛消息部分中这样做”。