Контактная форма Rails отправь мне письмо
Я точно следую платному учебнику и настраиваю страницу контактов, где, когда посетители заполняют форму и отправляют ее, я, владелец сайта, получаю электронное письмо со своим именем, электронной почтой и комментарием. Цель состоит в том, чтобы я мог легко ответить и ответить на них.
Мне это кажется странным, потому что странно, что ActionMailer дает вам возможность отправлять сообщения с чужой учетной записи электронной почты, для которой не определены параметры SMTP. На самом деле, следуя этому руководству, мне не нужно объявлять какие-либо настройки SMTP.
Но это не работает... хотел бы помочь с устранением неполадок.
Мой почтовый код:
class UserMailer < ActionMailer::Base
def contact_email(contact)
@contact = contact
mail(to: jdong8@gmail.com, from: @contact.email, :subject => "New message at JamesDong.com")
end
конец
Фрагмент кода контроллера:
def create
@contact= Contact.new(secure_params)
if @contact.save
UserMailer.contact_email(@contact).deliver
2 ответа
Вы можете клонировать репозиторий git по адресу https://github.com/RailsApps/learn-rails чтобы получить код из книги Learn Ruby on Rails. Вы увидите, что код работает как реализовано.
Если вы посмотрите на пример кода, параметры SMTP настраиваются в файлах config/environment /development.rb и config/environment /production.rb.
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "example.com",
authentication: "plain",
enable_starttls_auto: true,
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"]
}
GMAIL_USERNAME и GMAIL_PASSWORD устанавливают источник SMTP для почты.
UserMailer
Код только создает (часть) заголовок и тело сообщения электронной почты. "От" и "до" будут отображаться только для внешнего вида. Посмотрите на необработанное сообщение электронной почты, и вы увидите полный набор заголовков, которые показывают реальное происхождение сообщения.
Короче говоря, UserMailer
code устанавливает фальшивое "от", а реальное "от" устанавливается, когда электронное письмо отправляется с учетной записи Gmail.
Я могу ошибаться, но исходя из моего опыта работы с Rails, это невозможно, вам понадобятся настройки SMTP для учетной записи, с которой вы отправляете почту.
Здесь есть тонна вопросов, касающихся правильной настройки ActionMailer, но кажется, что вы пытаетесь отправить почту, не сообщая, откуда отправлять почту.
Этот вопрос и лучший ответ на него могут помочь, если это ваша проблема:
Как настроить почтовик действий (я должен зарегистрировать домен)?