7

Tôi đang cố triển khai biểu mẫu "liên hệ với chúng tôi" trên dự án đường ray 3.0.10 của mình. Theo RailsGuides tôi đã tạo một bưu phẩm.Có cách nào để gỡ lỗi bưu phẩm với sendgrid trên heroku không? Hoặc để kiểm tra xem thư có thực sự được gửi không?

class QuestionMailer < ActionMailer::Base 
    default :to => "%[email protected]" #gmail for domains 

    def ask(message) 
    @content = message.content 

    unless message.name.nil? or message.name.empty? 
     from = "#{message.name} <#{message.email}>" 
    else 
     from = message.email 
    end 

    mail(:subject => message.subject, :from => from) 
    end 
end 

Trong điều khiển của tôi, tôi có những dòng này:

if @question.valid? 
    QuestionMailer.ask(@question).deliver 
    redirect_to root_url, :notice => "Сообщение отправлено" 
else 

Production.rb:

config.action_mailer.delivery_method = :smtp 
config.action_mailer.default_url_options = { :host => '%mydomain%' } 

ActionMailer::Base.smtp_settings = { 
    :address  => "smtp.sendgrid.net", 
    :port   => "25", 
    :authentication => :plain, 
    :user_name  => ENV['SENDGRID_USERNAME'], 
    :password  => ENV['SENDGRID_PASSWORD'], 
    :domain   => ENV['SENDGRID_DOMAIN'] 
} 

tôi không có cấu hình này lúc đầu, nhưng khi tôi đã không nhận được email, tôi đã thêm nó.

Vấn đề là nhật ký Heroku cho biết rằng chế độ xem tương ứng đã được hiển thị nhưng tôi không nhận được email. Và bởi vì tôi sử dụng sendgrid, tôi không thể kiểm tra nó cục bộ.

UPD

Lưu ý để tự. Sau khi tạo gmail cho tài khoản miền, đừng quên cài đặt DNS của bạn. > _ <

Trả lời

11

Bạn có thể kiểm tra cục bộ bằng cách sử dụng sendgrid - từ dòng lệnh heroku config và bạn có thể lấy các giá trị mà Heroku đã đặt cho tên người dùng, mật khẩu và tên miền sendgrid và sau đó đặt chúng trong development.rb của bạn cùng với cài đặt actionmailer và nó sẽ định tuyến thông điệp của bạn thông qua sendgrid từ ứng dụng phát triển cục bộ của bạn.

Tôi cũng tìm thấy plugin heroku này https://github.com/hone/heroku-sendgrid-stats rất hữu ích để kiểm tra số gửi tin nhắn của tôi.