Чтобы добавить функцию электронной почты в проект rails:
Первый запуск
rails g mailer <mailername>
Это даст вам это (вы можете добавлять имена функций, но давайте будем проще)
create app/mailers/mailername_mailer.rb
invoke erb
create app/views/mailername_mailer
invoke test_unit
create test/mailers/mailername_mailer_test.rb
create test/mailers/previews/mailername_mailer_preview.rb
Далее go в app / mailers и измените default from:
class ApplicationMailer < ActionMailer::Base
default from: 'example@gmail.com'
layout 'mailer'
end
Это будет сообщать вашему приложению, что вы отправляете С этого электронного письма (вам нужно будет предоставить учетные данные позже ...)
Затем перейдите в созданный файл почтовых программ app/mailers/mailername_mailer.rb
ВНИМАНИЕ: Он наследуется от ApplicationMailer, поэтому вы получите 'default from', который мы объявили выше.
class MailernameMailer < ApplicationMailer
def request(arg)
@arg = arg
mail(to: "example@gmail.com", subject: @arg)
end
end
Этот почтовый по сути класс, но создание экземпляров работает немного по-другому. Он создает экземпляр, когда вы называете это статически ... как если бы вы были моделью. Почта (to: x) - это учетная запись, на которую вы собираетесь отправить это письмо. Вы можете использовать это в вашем контроллере. Например:
ExampleController.rb
def index
MailernameMailer.request("Hi I'm paul").deliver_later
end
Для просмотра:
Классная функция для электронных писем - это предварительные просмотры, встроенные в рельсы. Тестовое действие может быть вызвано в вашем файле mailername_mailer_preview.rb
, найденном в test/mailers/previews
.
Вот как это должно выглядеть:
def request(args)
@name = args
MailernameMailer.request(@name)
end
Точно так же, как описано выше в контроллере, вы собираетесь добавить экземпляр и вызвать функцию .. затем использовать эти данные в вашем просмотр найден по адресу: app/views/mailername_mailer/request.html.erb
и предварительный просмотр по адресу:
http://localhost:3000/rails/mailers/mailername_mailer
Ваше действие почтовой программы будет направлено на представление с тем же именем, что и у функции автоматически ...
Теперь для проверки учетной записи отправителя ... (Gmail нужна действующая учетная запись для отправки электронного письма). Измените свой файл production.rb так, чтобы он выглядел следующим образом ... хотя вам, вероятно, стоит поработать над разработкой, прежде чем переходить к производству, учитывая, что вам не всегда нужно применять передовые методы, пока вы не включите sh в производство.
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "gmail.com",
user_name: ENV["username"],
password: ENV["password"],
authentication: "plain"
}
config.action_mailer.default_url_options = {host: domain_name}
имя_домена должно быть просто localhost: 3000 для разработки.