要将电子邮件功能添加到Rails项目中:
首次运行
rails g mailer <mailername>
这将为您提供此功能(您可以追加函数名称,但保持简单)
create app/mailers/mailername_mailer.rb
invoke erb
create app/views/mailername_mailer
invoke test_unit
create test/mailers/mailername_mailer_test.rb
create test/mailers/previews/mailername_mailer_preview.rb
下一步转到应用程序/邮件程序并更改default from:
class ApplicationMailer < ActionMailer::Base
default from: 'example@gmail.com'
layout 'mailer'
end
这将告诉您的应用程序您正在从此电子邮件发送邮件(稍后将需要提供凭据...)
接下来进入您创建的邮件文件app/mailers/mailername_mailer.rb
注意:它继承自ApplicationMailer,因此您将获得上面声明的“默认来源”。
class MailernameMailer < ApplicationMailer
def request(arg)
@arg = arg
mail(to: "example@gmail.com",subject: @arg)
end
end
此邮件程序本质上是一个类,但是实例化的工作方式略有不同。
当您静态调用实例时,它会创建一个实例,就像创建模型一样。 mail(to:x)是您要将其邮寄到的帐户。您可以在控制器中使用它。像这样:
ExampleController.rb
def index
MailernameMailer.request("Hi I'm paul").deliver_later
end
查看:
电子邮件的一个很酷的功能是内置在rails中的预览。
可以在mailername_mailer_preview.rb
中的test/mailers/previews
文件中调用测试操作。
它应该是这样的:
def request(args)
@name = args
MailernameMailer.request(@name)
end
就像上面的控制器一样,您将添加实例化并调用该函数。然后在视图中使用该数据:app/views/mailername_mailer/request.html.erb
并在以下位置预览:
http://localhost:3000/rails/mailers/mailername_mailer
您的邮件程序动作将自动路由到与该函数同名的视图...
现在用于验证发件人帐户...(Gmail需要有效的帐户才能发送电子邮件)。更改您的production.rb文件,使其看起来像这样。.尽管您可能应该在进入生产之前就将其用于开发,但考虑到在进行生产之前不一定总是有最佳实践。
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",port: 587,domain: "gmail.com",user_name: ENV["username"],password: ENV["password"],authentication: "plain"
}
config.action_mailer.default_url_options = {host: domain_name}
域名应仅为localhost:3000进行开发。
,
尝试打开此设置以接收电子邮件:
https://myaccount.google.com/lesssecureapps
本文链接:https://www.f2er.com/2390963.html