Pergunta

Mailboxer is sending email notifications when the user has received a new message inside their inbox. This is great, however some users may not want to receive emails. How can I present a checkbox option in the view for the user that will disable the "new message" email notifications?

mailboxer.rb:

Mailboxer.setup do |config|

  #Configures if you applications uses or no the email sending for Notifications and Messages
  config.uses_emails = true

  #Configures the default from for the email sent for Messages and Notifications of Mailboxer
  config.default_from = "no-reply@mailboxer.com"

  #Configures the methods needed by mailboxer
  config.email_method = :mailboxer_email
  config.name_method = :name

  #Configures if you use or not a search engine and wich one are you using
  #Supported enignes: [:solr,:sphinx]
  config.search_enabled = false
  config.search_engine = :solr
end
Foi útil?

Solução

You could give the user a choice by doing:

def mailboxer_email(object)
  self.email if self.preferences.receive_direct_message_by_email?
end

or

def mailboxer_email(object)
    if self.no_email
    else
        nil
    end
end

You have to create a no_email attribute if going with second method.

Outras dicas

Assuming it is your User model which is messagable, you could override the mailboxer_email method along these lines:

class User < ActiveRecord::Base
  acts_as_messageable

  ...

  def mailboxer_email(object)
    if self.opts_out   # some attribute on the user to indicate they opt out of receiving emails
      nil
    else
      return self.email   # or whatever address the email is to be sent to
    end
  end
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top