Синатра с Пони всегда имеет один и тот же адрес электронной почты от
Я работаю через контактную форму из 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?), И пользователь отправлял с него, у него был бы адрес электронной почты.
Это часто случается на форумах, когда пользователь получает письмо от другого пользователя и использует "ответ". Затем письмо отправляется администратору форума. На сообщении обычно есть примечание, вроде "Не отвечайте на это сообщение, а делайте это в разделе сообщений на форуме".