J'ai vraiment besoin d'aide pour cela, j'ai essayé de travailler cela pendant 3 jours :( Mon application est censée envoyer des emails au client lorsque la commande est soit reçu ou expédié, mais il rompt en permanence avec cette erreurproblèmes sérieux envoyer des mails via actionmailer en production ROR
I, [2017-05-23T11:01:44.741054 #1060] INFO -- : Completed 500 Internal Server Error in 66ms (ActiveRecord: 4.2ms)
F, [2017-05-23T11:01:44.743481 #1060] FATAL -- :
SocketError (getaddrinfo: Name or service not known):
app/admin/order.rb:6:in `block (2 levels) in <top (required)>'
Ma configuration actionmailer
semble avoir raison.
config.action_mailer.default_url_options = { host: 'mypage.com'}
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: ENV["SMTP_ADDRESS"].inspect,
user_name: ENV["SMTP_USER"],
password: ENV["SMTP_PASSWORD"],
domain: "mypage.com",
port: 587,
authentication: :login,
enable_starttls_auto: true
}
les ENV
variables sont stockées dans la application.yml
SMTP_ADDRESS: "smtp.gmail.com"
SMTP_USER: "[email protected]"
SMTP_PASSWORD: "xxxxxxxx"
Les ENV
variables ont été vérifiées en exécutant:
Loading production environment (Rails 4.2.5)
irb(main):001:0> puts ENV["SMTP_ADDRESS"].inspect
"smtp.gmail.com"
=> nil
irb(main):002:0>
Je l'ai fait avec host smtp.gmail.com
positif avant-corps:
smtp.gmail.com is an alias for gmail-smtp-msa.l.google.com.
gmail-smtp-msa.l.google.com has address 74.125.206.108
gmail-smtp-msa.l.google.com has address 74.125.206.109
gmail-smtp-msa.l.google.com has IPv6 address 2a00:1450:400c:c04::6d
Je l'ai fait telnet smtp.gmail.com 587
:
Trying 74.125.206.108...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 smtp.gmail.com ESMTP c17sm3264999wre.35 - gsmtp
J'ai aussi ne nslookup smtp.gmail.com
:
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
smtp.gmail.com canonical name = gmail-smtp-msa.l.google.com.
Name: gmail-smtp-msa.l.google.com
Address: 74.125.206.108
Name: gmail-smtp-msa.l.google.com
Address: 74.125.206.109
Je suis à court d'options ici, cela fonctionne parfaitement sur place étaient config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
Mais après le déploiement actionmailer
pauses.
Dans mon compte google, j'ai https://accounts.google.com/DisplayUnlockCaptcha
et activé less secure apps
avec de la chance.
est inférieure à la admin/order.rb
ont été l'erreur est relevée pour la ligne: 6.
ActiveAdmin.register Order do
permit_params :shipped
after_update do |order|
OrderNotifier.shipped(@order).deliver if order.shipped #this is line 6.
end
show do |order|
panel 'Customer Details' do
attributes_table_for order, :name, :email, :address, :city, :country
end
panel 'Created' do
"#{time_ago_in_words order.created_at} ago"
end
panel 'Shipped' do
order.shipped
end
panel 'Order Details' do
table_for(order.product_items) do
column 'Product' do |item|
item.product.title
end
column 'Quantity' do |item|
item.quantity
end
column 'Price Isl' do |item|
number_to_currency item.total_price_isl
end
column 'Price USD' do |item|
number_to_currency item.total_price_usd
end
end
end
panel 'Order Total USD' do
number_to_currency order.total_price_usd
end
panel 'Order Total Iskr' do
number_to_currency order.total_price_isl
end
end
end
ici est le mailer/order_notifier.rb
class OrderNotifier < ApplicationMailer
default from: 'Concept Store <[email protected]>'
def received(order)
@order = order
mail to: order.email, subject: 'Concept Store'
end
def shipped(order)
@order = order
mail to: order.email, subject: 'Order Shipped'
end
end
Vous êtes mon héros aujourd'hui :) .... c'est tout .... si simple .. merci beaucoup – DaudiHell
content que ça a marché! :) –