verificacion - ¿Cómo puedo personalizar Devise para enviar correos electrónicos de restablecimiento de contraseña usando el correo de PostMark?
enviar correo de verificacion firebase (3)
Si también desea especificar ''etiquetas'' en los encabezados de matasellos, debe hacerlo en su correo:
# this override method is from Devise::Mailers::Helpers
def headers_for(action)
headers = {
:subject => translate(devise_mapping, action),
:from => mailer_sender(devise_mapping),
:to => resource.email,
:template_path => template_paths,
:tag => action.dasherize # specify the tag here
}
if resource.respond_to?(:headers_for)
headers.merge!(resource.headers_for(action))
end
unless headers.key?(:reply_to)
headers[:reply_to] = headers[:from]
end
headers
end
Estoy tratando de obtener todas las notificaciones por correo electrónico de mi sistema bajo un paraguas usando PostMarkApp y utilizando las gemas Rails ( postmark-rails , postmark-gem , y mail ). He creado con éxito un correo que maneja el envío de recibos para compras, pero no he podido recibir correos electrónicos para las contraseñas olvidadas. Mis registros de desarrollo muestran que Devise envió el mensaje, pero no recibí ningún correo electrónico en mi bandeja de entrada y los créditos de PostMark no disminuyeron.
¿Cuál es la manera mejor o más fácil de enviar los correos de Devise a través de mi cuenta de PostMark?
Fragmento de código de config / environment / development.rb
config.action_mailer.delivery_method = :postmark
config.action_mailer.postmark_settings = { :api_key => "VALID_API_KEY_WAS_HERE" }
config.postmark_signature = VALID_POSTMARK_SIGNATURE_WAS_HERE
Mi Mailer que usa Matasellos
class Notifier < ActionMailer::Base
# set some sensible defaults
default :from => MyApp::Application.config.postmark_signature
def receipt_message(order)
@order = order
@billing_address = order.convert_billing_address_to_hash(order.billing_address)
mail(:to => @order.user.email, :subject => "Your Order Receipt", :tag => ''order-receipt'', :content_type => "text/html") do |format|
format.html
end
end
end
EDITAR: SOLUCIÓN a mi pregunta está abajo
Se solucionó haciendo que mi Notifier
mailer extienda Devise :: Mailer y especificando Devise para usar mi Notifier como el remitente dentro de config/initializers/devise.rb
Fragmento de código de config / initializers / devise.rb
# Configure the class responsible to send e-mails.
config.mailer = "Notifier"
Mi notificador de correo ahora
class Notifier < Devise::Mailer
# set some sensible defaults
default :from => MyApp::Application.config.postmark_signature
# send a receipt of the Member''s purchase
def receipt_message(order)
@order = order
@billing_address = order.convert_billing_address_to_hash(order.billing_address)
mail(:to => @order.user.email, :subject => "Your Order Receipt", :tag => ''order-receipt'', :content_type => "text/html") do |format|
format.html
end
end
# send password reset instructions
def reset_password_instructions(user)
@resource = user
mail(:to => @resource.email, :subject => "Reset password instructions", :tag => ''password-reset'', :content_type => "text/html") do |format|
format.html { render "devise/mailer/reset_password_instructions" }
end
end
end
También tuve que generar las vistas para diseñar y copiar las plantillas de correo en el lugar correcto para mi correo. Algo como esto -
rails generate devise:views
cp app/views/devise/mailer/* app/views/notification_mailer/
Usando la última versión de Devise, los métodos anteriores no me ayudaron. Esta es mi solución.
En config / application.rb:
config.action_mailer.delivery_method = :postmark
config.action_mailer.postmark_settings = { :api_key => "your-API-key-here" }
En config / initializers / devise.rb:
config.mailer = "UserMailer" # UserMailer is my mailer class
En app / mailers / user_mailer.rb:
class UserMailer < ActionMailer::Base
include Devise::Mailers::Helpers
default from: "[email protected]"
def confirmation_instructions(record)
devise_mail(record, :confirmation_instructions)
end
def reset_password_instructions(record)
devise_mail(record, :reset_password_instructions)
end
def unlock_instructions(record)
devise_mail(record, :unlock_instructions)
end
# you can then put any of your own methods here
end
Por último, asegúrese de que ha generado vistas de dispositivos personalizados
rails generate devise:views
y mueva las plantillas de correo electrónico de app / views / devise / mailer / a app / views / user_mailer /
mv app/views/devise/mailer/* app/views/user_mailer/