Мне сложно найти решение (почти 3 дня), мой код в incoming_controller.rb кажется прав, я тестировал его в консоли rails и кажется, что только проблема заключается в том, что когда я отправляю электронное письмо (из моей учетной записи gmail) в электронную почту электронной почты, маршруты, которые я объявляю, не будут подключаться к моему рельсовому приложению, и я получаю предупреждения в журналах mailgun.Маршруты Mailgun, не подключающиеся к входящему контроллеру
Что я пытаюсь сделать, так это разрешить пользователям отправлять электронную почту и преобразовывать содержимое тела в закладку и сохранять ее в базе данных, а также тему письма в виде темы.
Вот мой routes.rb файл:
Rails.application.routes.draw do
devise_for :users
get 'welcome/index'
get 'welcome/about'
root to: 'welcome#index'
post :incoming, to: 'incoming#create'
end
Мой incoming_controller.rb файл:
class IncomingController < ApplicationController
skip_before_action :verify_authenticity_token, only: [:create]
def create
@user = User.find_by(email: params[:sender])
@topic = Topic.find_by(title: params[:subject])
@url = params["body-plain"]
if @user.nil?
@user = User.new(email: params[:sender], password: "temp0rary_passw0rd")
@user.skip_confirmation!
@user.save!
end
if @topic.nil?
@topic = @user.topics.create(title: params[:subject])
end
@bookmark = @topic.bookmarks.create(url: @url)
head 200
end
end
Тема принадлежит Пользователю и имеет много закладок, Пользователь имеет множество тем , Закладка принадлежит теме.
Кроме того, вот мой mail.rb файла:
ActionMailer::Base.smtp_settings = {
port: 587,
address: 'smtp.mailgun.org',
user_name: ENV['MAILGUN_SMTP_LOGIN'],
password: ENV['MAILGUN_SMTP_PASSWORD'],
domain: 'appfc266c436eb04ebaae05a3f3f8ad7e49.mailgun.org',
authentication: :plain,
content_type: 'text/html'
}
ActionMailer::Base.delivery_method = :smtp
# Makes debugging *way* easier.
ActionMailer::Base.raise_delivery_errors = true
Примечание: mailgun хорошо работает с отправкой инструкции подтверждения по электронной почте от Devise пользователей, поэтому он правильно настроен, что я могу Не делайте этого, чтобы mailgun получал электронные письма и хранил их в моем rails db через параметры с помощью входящего_контроллера.
Что я делаю неправильно?
Мой mailgun маршрут выглядит следующим образом:
Filter Expression: catch_all()
действия: вперед ("http://bookmark-this.herokuapp.com/incoming/")
Вот журналы предупреждения, которые я получаю в mailgun когда это Я посылаю электронное письмо:
Вот репозиторий проекта на github: https://github.com/bntzio/bookmark-this
Большое спасибо!
Что говорят журналы электронной почты, когда вы отправляете электронное письмо? – fuzzyalej