Синатра с Пони всегда имеет один и тот же адрес электронной почты от

Я работаю через контактную форму из Sinatra Jump Start и пытаюсь выяснить, почему "От" всегда та же учетная запись Gmail, которую я использую в качестве: user_name. У меня есть версия 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 вместо.

1 ответ

Этот ответ пришел из обсуждения сайта.

Вы отправляете форму со своей веб-страницы, поэтому отправитель - это вы. Если бы вы открывали почтовое программное обеспечение отправителей (используя функцию html mail?), И пользователь отправлял с него, у него был бы адрес электронной почты.

Это часто случается на форумах, когда пользователь получает письмо от другого пользователя и использует "ответ". Затем письмо отправляется администратору форума. На сообщении обычно есть примечание, вроде "Не отвечайте на это сообщение, а делайте это в разделе сообщений на форуме".

Другие вопросы по тегам