Rails 5.2 Почта ActionMailer не будет отправляться.Не вижу ошибок на сервере - PullRequest
0 голосов
/ 10 октября 2018

Попытка отправить добровольную форму через SMTP с использованием Gmail, Sendgrid или чего-либо еще, однако у меня настроена программа Action Mailer, и я предполагаю, что я действительно должен видеть, что письмо приходит, когда я смотрю на него.Я вижу эту ошибку ниже, но не вижу никакой ошибки или получаю какое-либо электронное письмо вообще.Я пытался писать путы в своем действии создания, но я тоже не вижу их, так что, надеюсь, это будет легко исправить, поскольку я что-то упустил или что-то не соответствует обычному соглашению Rails.

Я используюrails 5.2

Что я вижу на сервере:

Started GET "/volunteer?utf8=%E2%9C%93&authenticity_token=AZ%2FAflVf%2BlqRUYm45Jo82wAMpq%2B%2BY%2F93piLbeRXdK5n%2FQIWhuaUL3Oe2%2FSwzR%2FCLvj%2FAKW%2BBgD8dPd8vJYRDBA%3D%3D&volunteer_message%5Bname%5D=test+name&volunteer_message%5Bemail%5D=email%40test.com&volunteer_message%5Bphone_number%5D=88888888&volunteer_message%5Bbody%5D=test+email&commit=Send" for 127.0.0.1 at 2018-10-10 17:29:42 +0100

Processing by PagesController#volunteer as HTML
      Parameters: {"utf8"=>"✓", "authenticity_token"=>"AZ/AflVf+lqRUYm45Jo82wAMpq++Y/93piLbeRXdK5n/QIWhuaUL3Oe2/SwzR/CLvj/AKW+BgD8dPd8vJYRDBA==", "volunteer_message"=>{"name"=>"test name", "email"=>"email@test.com", "phone_number"=>"88888888", "body"=>"test email"}, "commit"=>"Send"}

Хорошо, так вот мой код и способ, которым все это изложено.

PagesController.rb содержит страницу, называемую волонтером, и содержит частичную часть (называемую _new.html.erb), которая является формой, которая находится в своей собственной папке, называемой волонтером_messages

views / добровольцев_messages / _new.html.erb

 <%= simple_form_for @volunteer_message, url: create_volunteer_message_url do |f| %>
  <%= @volunteer_message.errors.full_messages.join(', ') %>

  <%= f.input :name, placeholder: 'name' %>
  <%= f.input :email, placeholder: 'email' %>
  <%= f.input :phone_number, placeholder: 'phone number' %>
  <%= f.input :body, placeholder: 'body' %>
  <%= f.submit 'Send' %>
<% end %>

маршруты созданы

   # is this causing a problem do you think? 
   get '/volunteer' => 'pages#volunteer'

   # volunteer message routes
   get '/volunteer', to: 'volunteer_message#new', as: 'new_volunteer_message'
   post '/volunteer', to: 'volunteer_message#create', as: 'create_volunteer_message'

models / добровольцы_message.rb

class VolunteerMessage
    include ActiveModel::Model
    attr_accessor :name, :email, :phone_number, :body
#   validates :name, :email, :phone_number, :body, presence: true
end

почтовые службы / волонтер_мессы_mailer.rb

class VolunteerMessageMailer < ApplicationMailer

      # Subject can be set in your I18n file at config/locales/en.yml
      # with the following lookup:
      #
      #   en.volunteer_message_mailer.volunteer.subject
      #
      def volunteer(volunteer_message)
            @body = volunteer_message.body
            @subject = "Volunteer Request sent from www.myapp.com"
        mail to: "myemail@example.com", from: volunteer_message.email
      end
    end

волонтер_мессейса_controller.rb

class VolunteerMessagesController < ApplicationController

    def new
    @volunteer_message = VolunteerMessage.new
  end

    def create
    @volunteer_message = VolunteerMessage.new volunteer_message_params
    if @volunteer_message.valid?
      VolunteerMessageMailer.volunteer(@volunteer_message).deliver_now
      redirect_to new_volunteer_message_url
      flash.now[:notice] = "We have received your volunteer request and will be in touch soon!"
    else
      flash.now[:notice] = "There was an error sending your volunteer request. Please try again."
      render :new
    end
  end

    private

    def volunteer_message_params
    params.require(:volunteer_message).permit(:name, :email, :phone_number, :body)
  end
end

pages_controller.rb

class PagesController < ApplicationController
  def volunteer
    @lead = Lead.new
    @volunteer_message = VolunteerMessage.new
  end
end

development.rb

  # Don't care if the mailer can't send.
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_deliveries = true

    config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }


    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = {
            address: 'smtp.gmail.com',
            port: 587,
            domain: 'gmail.com',
            enable_starttls_auto: true,
            user_name: 'me@gmail.com',
            password: 'gmailapppassword',
            authentication: 'plain'
    }

Не уверен, что еще я могу добавить здесь.Я не думаю, что мне даже нужно, чтобы он stmp_settings видел, как программа-мейлер действительно показывает шаблон отправляемого письма?

Также я предполагаю, что это что-то связано с формой и маршрутом, потому что добавленный ive помещает сообщения в действие create на контроллере волонтеров-сообщений, и не видит их в журнале моего сервера.

Я не получаю никаких ошибок при нажатии кнопки отправки.Я замечаю, что параметры входят в URL, но это все.он остается там, а когда обновления остаются на том же экране.

пример:

http://localhost:3000/volunteer?utf8=%E2%9C%93&authenticity_token=AZ%2FAflVf%2BlqRUYm45Jo82wAMpq%2B%2BY%2F93piLbeRXdK5n%2FQIWhuaUL3Oe2%2FSwzR%2FCLvj%2FAKW%2BBgD8dPd8vJYRDBA%3D%3D&volunteer_message%5Bname%5D=test+name&volunteer_message%5Bemail%5D=email%40test.com&volunteer_message%5Bphone_number%5D=88888888&volunteer_message%5Bbody%5D=test+email&commit=Send

Подсказка в тексте сервера на изображении, которое показывает параметры, поступающие на контроллер страниц.Я не очень хочу этого.Просто хочу, чтобы там было частичное, но действие для работы действия create в контроллере волонтера.

Любая помощь будет высоко ценится.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...