0

Я точно следую за paid tutorial и создаю контактную страницу, где, когда посетители заполняют форму и отправляют, я, владелец веб-сайта, получаю электронное письмо с их именем, электронной почтой и комментарий. Цель состоит в том, чтобы позволить мне легко ответить и ответить на них.Rails контактная форма отправить письмо мне

Это кажется странным для меня, потому что странно, что ActionMailer дает вам возможность отправлять с чужой электронной почты, для которой не определены настройки SMTP. Фактически, следуя этому руководству, мне не нужно объявлять какие-либо настройки SMTP.

Но это не работает ... понравится помощь по поиску и устранению неисправностей.

Мой почтовик код:

class UserMailer < ActionMailer::Base 

def contact_email(contact) 
    @contact = contact 
    mail(to: [email protected], 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 

ответ

1

Вы можете клонировать 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 устанавливает поддельную «от», а реальная «от» устанавливается, когда электронное письмо отправляется из учетной записи Gmail.

+0

Спасибо! Quick follow-ups: 1) Я получаю msgs «из» gmail, который я установил в SMTP. Это имеет смысл, но какая строка кода вызывает именно этот gmail? Мне особенно любопытно, так как «from» - это '@ contact.email', который нигде не появляется (фактически, работает фиктивный @ contact.email). Связанный, работает отлично без по умолчанию [email protected] 2) Является ли figaro gem только созданием файла application.yml? Почему я не могу сделать это вручную? Я предполагаю, что не использовать figaro был проблемой ранее 3) Иногда, я получаю ошибку «время выполнения» в представлении, знаете ли вы, почему? – james

0

Я мог бы быть неправильно здесь, но основаны от моего опыта в Rails это не представляется возможным , вам нужно будет установить параметры SMTP для учетной записи, с которой вы отправляете почту.

Здесь есть масса вопросов, связанных с настройкой ActionMailer, но похоже, что вы пытаетесь отправить почту, не сообщая ей, куда отправлять почту.

Этот вопрос лучший ответ на него может иметь некоторую помощь, если это ваш вопрос:

How to configure action mailer (should I register domain)?

+0

Спасибо, мне это показалось странным, но ... так интересно, что этот учебник делает это. Я отправлю письмо автору. – james

Смежные вопросы