希望使用 Mailjet 的 API 发送延迟的作业邮件,但未发送电子邮件。所有都在 Foreman 本地工作,但同样,在 Heroku 上的开发并没有发送。已创建延迟作业表。
这是宝石文件
gem 'mailjet'
gem 'delayed_job_active_record'
控制器
def create
@article = Article.new(article_params)
if @article.save
# send email to referral email
all_users = User.all
all_users.each do |user|
ArticleMailer.delay.article_confirmation(user,@article)
end
redirect_to @article
else
render 'new'
end
end
邮寄者
class ArticleMailer < ActionMailer::Base
def article_confirmation(user,article)
@user = user
@article = article
Mailjet::MessageDelivery.create(
to: user.email,
from: "[EMAIL]@gmail",
subject: "[HTML]",
html: "[HTML]
end
end
/environments/development.rb 文件
config.action_mailer.delivery_method = :mailjet
config.action_mailer.smtp_settings = {
address: "in-v3.mailjet.com",
port: 587,
domain: "[OURDOMAIN].com",
authentication: "login",
enable_starttls_auto: true,
user_name: "[OUR_USERNAME]",
password: "[OUR_PASSWORD]",
require_ssl: true
}
架构
create_table "delayed_jobs", force: true do |t|
t.integer "priority", default: 0, null: false
t.integer "attempts", default: 0, null: false
t.text "handler", null: false
t.text "last_error"
t.datetime "run_at"
t.datetime "locked_at"
t.datetime "failed_at"
t.string "locked_by"
t.string "queue"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority", using: :btree
create_table "friendly_id_slugs", force: true do |t|
t.string "slug", null: false
t.integer "sluggable_id", null: false
t.string "sluggable_type", limit: 50
t.string "scope"
t.datetime "created_at"
end
更新:
当我跑Delayed::Job.last
=> #<Delayed::Backend::ActiveRecord::Job id: 181, priority: 0, attempts: 0, handler: "--- !ruby/object:Delayed::PerformableMailer\nobject...", last_error: nil, run_at: "2014-12-01 19:04:25", locked_at: nil, failed_at: nil, locked_by: nil, queue: nil, created_at: "2014-12-01 19:04:25", updated_at: "2014-12-01 19:04:25">