允许用户指定他们自己的邮件服务器设置。 Rails 5.x 与 ActionMailer
Allowing users to specify their own mail server settings. Rails 5.x with ActionMailer
所以我几乎完成了在我的 Rails 应用程序中设置邮件程序,但我似乎无法理解 https://guides.rubyonrails.org/action_mailer_basics.html.
上的其中一条信息
根据本教程,您可以指定自己的smtp_settings
选项,这样您就可以像这样发送邮件:
def welcome_email
smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'example.com',
user_name: 'myfromemail@example.com',
password: "myPassword",
authentication: :plain,
enable_starttls_auto: true
}
mail(to: "destination@example.com",
subject: "Test Notification",
smtp_settings: smtp_settings
)
end
但这实际上不起作用。底部的相同示例使用 delivery_method
并像我在本示例中使用的那样传递哈希。
如果我尝试在邮件程序上使用 .deliver
方法,这是我得到的错误:
Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost"
port 25)
它几乎完全忽略了我传递给 mail
函数的 smtp 设置。我在这里做错了什么?
我查看了 How to send emails with multiple, dynamic smtp using Actionmailer/Ruby on Rails 中的示例,但这种方法不起作用:
delivery_method.settings.merge!(smtp_settings)
因为 delivery_method
实际上是 :smtp
而这是不可能的。
delivery_method
选项似乎有效,但我需要传递其他内容,例如身份验证、SSL/TLS,甚至端口。 delivery_method
选项似乎没有提供这些。
尝试在 post 上实施解决方案之一给我这个错误:
MyMailer.delivery_method.settings.merge!(smtp_settings)
Traceback (most recent call last):
1: from (irb):3
NoMethodError (undefined method `settings' for :smtp:Symbol)
对于动态邮件服务器设置,您需要按照以下方式进行配置
instance_email = Mailer.welcome_email
config_settings = {address: 'xyz.com', port: 587}
instance_email.delivery_method.settings.merge!
config_settings instance_email.deliver
所以我几乎完成了在我的 Rails 应用程序中设置邮件程序,但我似乎无法理解 https://guides.rubyonrails.org/action_mailer_basics.html.
上的其中一条信息根据本教程,您可以指定自己的smtp_settings
选项,这样您就可以像这样发送邮件:
def welcome_email
smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'example.com',
user_name: 'myfromemail@example.com',
password: "myPassword",
authentication: :plain,
enable_starttls_auto: true
}
mail(to: "destination@example.com",
subject: "Test Notification",
smtp_settings: smtp_settings
)
end
但这实际上不起作用。底部的相同示例使用 delivery_method
并像我在本示例中使用的那样传递哈希。
如果我尝试在邮件程序上使用 .deliver
方法,这是我得到的错误:
Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25)
它几乎完全忽略了我传递给 mail
函数的 smtp 设置。我在这里做错了什么?
我查看了 How to send emails with multiple, dynamic smtp using Actionmailer/Ruby on Rails 中的示例,但这种方法不起作用:
delivery_method.settings.merge!(smtp_settings)
因为 delivery_method
实际上是 :smtp
而这是不可能的。
delivery_method
选项似乎有效,但我需要传递其他内容,例如身份验证、SSL/TLS,甚至端口。 delivery_method
选项似乎没有提供这些。
尝试在 post 上实施解决方案之一给我这个错误:
MyMailer.delivery_method.settings.merge!(smtp_settings)
Traceback (most recent call last):
1: from (irb):3
NoMethodError (undefined method `settings' for :smtp:Symbol)
对于动态邮件服务器设置,您需要按照以下方式进行配置
instance_email = Mailer.welcome_email
config_settings = {address: 'xyz.com', port: 587}
instance_email.delivery_method.settings.merge!
config_settings instance_email.deliver