Мы пытаемся связать нашу форму для сброса пароля с гемом mailjet. Я следовал всем инструкциям на mailjet repo read-me, но мне все еще не удается подключить API до формы «Сброс пароля» Devise, и кажется, что что-то не хватает.
a) Во-первых, я всюду искал на google, сайте поддержки mailjet, и здесь, на Stackoverflow, но, похоже, нигде не могу найти никаких инструкций, помогающих связать MailJet с Devise. Я что-то пропустил?
b) Если нет заранее написанных руководств о том, как это сделать, может кто-нибудь любезно помочь с конкретными шагами, которые мне нужно предпринять, чтобы убедиться, что при нажатии «Отправить ссылку для сброса пароля» на нашей странице входа в систему для разработки он правильно отправляет электронное письмо? Прямо сейчас мы получаем ошибку: требуется электронная почта. Но мой адрес электронной почты там. Так что это не правильно соединяется. Я думаю, что нам нужно подключить эту конкретную страницу устройства к api mailjet, но я не уверен, как это сделать.
в) Далее, это тестируемый на локальном хосте или единственный способ протестировать, чтобы запустить на герою? Возможно, это может быть одной из проблем ...
d) Наконец, нужно ли что-то делать на самом Heroku, чтобы подключиться к моей учетной записи MailJet? Видимо, вы делаете с SendGrid, но я думаю, потому что у меня уже есть mailjet API и Secret Key, мне не нужно подключаться напрямую через Heroku, да?
Заранее спасибо за любую помощь.
-Monroe
Вот мой код:
СТРАНИЦА СБРОСА ПАРОЛЯ
<main class="form forgot-form">
<section class="form-container">
<h1>Reset password</h1>
<p>Enter the email address associated with your account, and we’ll email you a link to reset your password.</p>
<%= simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }, :defaults => { wrapper: false }) do |f| %>
<%= f.error_notification %>
<%= f.input :email, required: true, autofocus: true, error: 'Email is required',
input_html: { class: 'form__field' }, label_html: { class: 'sr-only' }, placeholder: 'Email Address' %>
<%= f.button :submit, "Send reset link", class: 'form__button mt-4' %>
<% end%>
<%= link_to '< Back to Login', new_user_session_path, class: "link go-page" %>
</section>
</main>
ПОЧТА САМА:
<p>Hello <%= @resource.email %>!</p>
<p>Someone has requested a link to change your password. You can do this through the link below.</p>
<p><%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token) %></p>
<p>If you didn't request this, please ignore this email.</p>
<p>Your password won't change until you access the link above and create a new one.</p>
ИНИЦИАЛИЗАТОР:
# kindly generated by appropriated Rails generator
Mailjet.configure do |config|
config.api_key = 'my-api-key--removed for safety'
config.secret_key = 'my-secret-key--removed for safety'
config.default_from = 'my-email--removed for safety'
# Mailjet API v3.1 is at the moment limited to Send API.
# We’ve not set the version to it directly since there is no other endpoint in that version.
# We recommend you create a dedicated instance of the wrapper set with it to send your emails.
# If you're only using the gem to send emails, then you can safely set it to this version.
# Otherwise, you can remove the dedicated line into config/initializers/mailjet.rb.
config.api_version = 'v3.1'
end
DEVELOPMENT.RB
# Specify that we are using the MailJet API for transactional emails
config.action_mailer.delivery_method = :mailjet
# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = false
config.action_mailer.perform_caching = false
production.rb
# Use a real queuing backend for Active Job (and separate queues per environment)
# config.active_job.queue_adapter = :resque
# config.active_job.queue_name_prefix = "bdcommunity_#{Rails.env}"
config.action_mailer.perform_caching = false
# Ignore bad email addresses and do not raise email delivery errors.
#Set this to true and configure the email server for immediate delivery to raise delivery errors.
#NOTE FROM MONROE: We should look into this after we launch and as we develope the site further
#config.action_mailer.raise_delivery_errors = false
# Specify that we are using the MailJet API for transactional emails
config.action_mailer.delivery_method = :mailjet
# config.action_mailer.perform_deliveries = true
Выше я обнаружил сообщение "execute_deliveries", опубликованное в 2011 году, поэтому оно может не сработать. Я просто поместил это (закомментировано) на случай, если это поможет вам понять, что мы делаем неправильно.