gpt4 book ai didi

ruby-on-rails - 在生产 ROR 中通过 actionmailer 发送邮件的严重问题

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:33 24 4
gpt4 key购买 nike

我真的需要这方面的帮助,我已经尝试解决这个问题 3 天了:(我的应用程序应该在收到或发货订单时向客户发送电子邮件,但它经常因此错误而中断。

  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)>'

我的actionmailer设置似乎是正确的:

      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
}

ENV变量存储在application.yml

SMTP_ADDRESS: "smtp.gmail.com"
SMTP_USER: "xxx@xxxxxxxxxx.com"
SMTP_PASSWORD: "xxxxxxxx"

已通过运行检查了ENV变量:

Loading production environment (Rails 4.2.5)
irb(main):001:0> puts ENV["SMTP_ADDRESS"].inspect
"smtp.gmail.com"
=> nil
irb(main):002:0>

我已经完成 host smtp.gmail.com 并获得肯定的结果:

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

我已经完成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

我还完成了 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

我这里的选项用完了,这在本地完美运行 config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

但在部署 actionmailer 后中断。

在我的谷歌帐户中,我已经https://accounts.google.com/DisplayUnlockCaptcha 并启用了安全性较低的应用,但不幸的是。

下面是 admin/order.rb 是第 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

这是mailer/order_notifier.rb

 class OrderNotifier < ApplicationMailer

default from: 'Concept Store <mail@mypage.com>'

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

最佳答案

我想知道这是否像下面这样简单:

config.action_mailer.smtp_settings = {
# address: ENV["SMTP_ADDRESS"].inspect,
address: ENV["SMTP_ADDRESS"],
# ...
}
  • 因为 inspect 将引号添加到字符串中(见下文):

    puts "somestring"
    # => somestring
    puts "somestring".inspect
    # => "somestring"

关于ruby-on-rails - 在生产 ROR 中通过 actionmailer 发送邮件的严重问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44155659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com