如何在Rails中实际发送电子邮件

我想使用真实帐户将电子邮件从我的应用发送到Gmail 我的代码基于此网站https://guides.rubyonrails.org/action_mailer_basics.html,但是当我运行源代码时,该电子邮件显示在终端上,但是没有发送到我的Gmail帐户。如何将电子邮件发送到我的Gmail帐户,以便可以在https://mail.google.com/mail/u/0/#inbox中查看它?

这是我的代码:

user_mailer.rb

class UserMailer < Applicationmailer
  default from: 'xuanle.khtn@gmail.com'

  def sample_email
    mail to: 'leanhxuan_t59@hus.edu.vn',subject: 'Test Mail Rails'
  end
end

user_controller.rb

def index
    UserMailer.sample_email.deliver_now
end

production.rb

config.action_mailer.delivery_method = :smtp
# SMTP settings for gmail
config.action_mailer.smtp_settings = {
  :address              => "mail.google.com",:port                 => 587,:user_name            => 'xuanle.khtn@gmail.com',:password             => '********',:authentication       => "plain",:enable_starttls_auto => true
}
liulity5201314 回答:如何在Rails中实际发送电子邮件

要将电子邮件功能添加到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

大家都在问