【问题标题】:Sinatra with Pony always has the same email for fromSinatra 和 Pony 总是有相同的电子邮件来自
【发布时间】:2015-01-19 03:52:30
【问题描述】:

我正在处理来自 Sinatra Jump Start 的联系表格,并试图弄清楚为什么“发件人”总是与我使用的 :user_name 相同的 gmail 帐户。我有一个 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],而是显示来自:via_options:user_name 电子邮件。

【问题讨论】:

    标签: email sinatra pony


    【解决方案1】:

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

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

    当用户收到另一个用户的电子邮件并使用“回复”时,这种情况在论坛中经常发生。然后将电子邮件发送给论坛管理员。消息上通常会有一条注释,上面写着“请勿回复此消息,但请在论坛消息部分回复”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多