首页 文章

Rails&Mailgun:电子邮件不发送

提问于
浏览
1

我有一个发送电子邮件通知的应用程序 . 一些用户提到他们没有收到通知 .

NotificationMailer.rb:

def send_daily_digest(user_id)
      @user = User.find(user_id)
      mail(to: @user.email, subject: "#{@jobs.count} new jobs yesterday")
      mail(to: "myadminemail@gmail.com", subject: "TEST #{@jobs.count} new jobs yesterday for #{@user.email}")
  end

我的电子邮件是myadminemail@gmail.com,我收到了电子邮件 . 我检查了Mailgun日志,并且没有发送其他(非管理员)电子邮件 .

可能是什么导致了这个?

编辑:我刚刚做了以下更改:

def send_daily_digest(user_id)
          @user = User.find(user_id)
          @recipients = []
          @recipients << @user.email
          @recipients << myadminemail@gmail.com
          mail(to: @recipients, subject: "#{@jobs.count} new jobs yesterday")
      end

正确地进行更改会将电子邮件发送给两个收件人 . 所以也许它与不被允许有两个单独的mail_to动作有关?

我现在的问题是这两个收件人都是电子邮件的CC . 我希望电子邮件是独立的,并指向每个用户 . 我怎样才能做到这一点?

2 回答

  • 0

    /config/environments/development.rb

    config.action_mailer.raise_delivery_errors = false
      config.action_mailer.default_url_options = { :host => 'localhost:3000' }
      config.action_mailer.delivery_method = :smtp
      config.action_mailer.smtp_settings = {
          :authentication => :plain,
          :address => "smtp.mailgun.org",
          :port => 587,
          :domain => "you domain  in https://mailgun.com/app/",
          :user_name => "you user_name in https://mailgun.com/app/",
          :password => "you password in https://mailgun.com/app/"
      }
    
  • 0

    根据Rails Docs about ActionMailer,mail方法是创建消息并呈现电子邮件模板的主要方法 .

    这意味着等同于ActionController#render,所以它可能只是将邮件发送到mail方法调用的最后一个收件人 .

    所以也许你应该做的是将交付逻辑移动到控制邮件程序的对象 .

    例如,我称这些对象为调度程序 .

    class ClientDispatcher
      def self.dispatch_digests
        Clients.all.each do |client|
          DigestMailer.send_daily_digest(client).deliver_later
          DigestMailer.send_daily_digest("admin@gmail.com").deliver_later
        end
      end
    end
    

相关问题