📜  Ruby on Rails-发送电子邮件(1)

📅  最后修改于: 2023-12-03 15:34:45.573000             🧑  作者: Mango

Ruby on Rails-发送电子邮件

简介

在Web应用程序中,电子邮件是一种必不可少的通信方式。Rails为我们提供了一个强大且简单的方法来发送电子邮件。

Rails集成了Action Mailer组件,我们可以使用它来构建和发送邮件。

在本文中,我们将使用Action Mailer组件来说明如何在Rails中发送电子邮件。

步骤

发送电子邮件需要以下步骤:

  1. 设置SMTP服务器
  2. 编写电子邮件模板
  3. 指定电子邮件的收件人和主题
  4. 发送电子邮件
设置SMTP服务器

在Rails中,我们需要配置SMTP服务器的信息,以便Action Mailer能够正确地发送邮件。

我们可以在config/environments文件夹下的development.rbproduction.rb文件中进行配置。以development.rb文件为例:

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:              'smtp.example.com',
  port:                 587,
  domain:               'example.com',
  user_name:            '<username>',
  password:             '<password>',
  authentication:       'plain',
  enable_starttls_auto: true
}

上述配置会将SMTP服务器地址设为smtp.example.com,端口号设为587,并使用明文认证方式进行认证。另外,配置文件中的user_namepassword应该替换为您的SMTP帐户登录凭据。

编写电子邮件模板

在Rails中,电子邮件模板使用ERB语法编写。

我们需要在app/views文件夹下创建一个与邮件模板名称对应的文件夹,并在其中编写模板文件。例如,如果我们要编写名为welcome的邮件模板,则应在app/views/welcome_mailer文件夹下创建一个名为welcome.html.erb的文件,并在其中编写HTML邮件内容。

<!DOCTYPE html>
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
    <title>Welcome to my app</title>
  </head>
  <body>
    <h1>Hello <%= @user.name %>!</h1>
    <p>Welcome to my awesome app!</p>
  </body>
</html>

请注意,上述代码中的@user.name是实例变量,我们将在下一步中设置它。

指定电子邮件的收件人和主题

在Rails中,我们可以使用Action Mailer的mail方法来设置收件人、主题和邮件内容等电子邮件属性。

我们需要在app/mailers文件夹下创建与邮件名称相对应的文件,并在其中定义要发送的电子邮件。

例如,如果我们要发送一个名为WelcomeMailer的电子邮件,则需在app/mailers/welcome_mailer.rb文件中编写以下代码:

class WelcomeMailer < ApplicationMailer
  def welcome_email(user)
    @user = user
    mail(to: @user.email, subject: 'Welcome to my app')
  end
end

在上述代码中,我们使用了ApplicationMailer,它是所有电子邮件类的基类。在welcome_email方法中,我们设置了@user实例变量,并通过mail方法设置了收件人地址和主题。

发送电子邮件

现在,我们已经完成了所有的准备工作,可以使用Action Mailer来发送电子邮件了。

要发送电子邮件,我们需要在控制器或其他任何地方调用WelcomeMailer类的welcome_email方法。例如,在控制器中发送电子邮件的代码如下:

class WelcomeController < ApplicationController
  def index
    user = User.find(params[:user_id])
    WelcomeMailer.welcome_email(user).deliver_now
  end
end

上述代码中,我们从User模型中获取用户信息,并调用WelcomeMailer类的welcome_email方法发送电子邮件。我们使用deliver_now方法立即将邮件发送到SMTP服务器。

现在,当我们访问/welcome?user_id=1时,电子邮件将被发送到id为1的用户。

结语

在本文中,我们介绍了如何在Rails中发送电子邮件。我们简要介绍了Action Mailer、SMTP服务器的设置、电子邮件模板和如何发送电子邮件。

现在,您可以在Rails应用程序中轻松地发送电子邮件了!