📅  最后修改于: 2020-10-20 05:31:45             🧑  作者: Mango
Action Mailer是Rails组件,使应用程序能够发送和接收电子邮件。在本章中,我们将看到如何使用Rails发送电子邮件。让我们开始使用以下命令创建电子邮件项目。
tp> rails new mailtest
这将创建继续进行所需的框架。现在,我们将从配置ActionMailer开始。
以下是完成实际工作之前必须完成的配置步骤-
转到电子邮件项目的config文件夹并打开environment.rb文件,并在此文件底部添加以下行。
config.action_mailer.delivery_method = :smtp
它告诉ActionMailer您要使用SMTP服务器。如果使用的是基于Unix的操作系统,例如Mac OS X或Linux,也可以将其设置为:sendmail。
还要在environment.rb的底部添加以下代码行。
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'example.com',
user_name: '',
password: '',
authentication: 'plain',
enable_starttls_auto: true
}
将每个哈希值替换为简单邮件传输协议(SMTP)服务器的正确设置。如果您还不知道,可以从Internet服务提供商处获取此信息。如果使用标准SMTP服务器,则无需更改端口号25和身份验证类型。
您也可以更改默认电子邮件格式。如果您希望以HTML而非纯文本格式发送电子邮件,请将以下行也添加到config / environment.rb-
ActionMailer::Base.default_content_type = "text/html"
ActionMailer :: Base.default_content_type可以设置为“ text / plain”,“ text / html”和“ text / enriched”。默认值为“文本/纯文本”。
下一步将是创建邮件程序
使用以下命令生成邮件程序,如下所示:
tp> cd emails
emails> rails generate mailer Usermailer
这将在app \ mailer目录中创建一个文件user_mailer.rb。检查此文件的内容,如下所示:
class Emailer < ActionMailer::Base
end
让我们创建一个如下的方法-
class UserMailer < ApplicationMailer
default from: 'notifications@example.com'
def welcome_email(user)
@user = user
@url = 'http://www.gmail.com'
mail(to: @user.email, subject: 'Welcome to My Awesome Site')
end
end
默认哈希-这是您从该邮件程序发送的任何电子邮件的默认值的哈希。在这种情况下,我们将:from标头设置为此类中所有消息的值。可以基于每个电子邮件覆盖
mail-实际的电子邮件,我们传入:to和:subject标头。
在app / views / user_mailer /中创建一个名为welcome_email.html.erb的文件。这将是用于电子邮件的模板,格式为HTML-
Welcome to example.com,
You have successfully signed up to example.com,your username is:
.
To login to the site, just follow this link:
.
Thanks for joining and have a great day!
接下来,我们将为此应用程序创建一个文本部分,如下所示:
Welcome to example.com,
===============================================
You have successfully signed up to example.com,
your username is: .
To login to the site, just follow this link: .
Thanks for joining and have a great day!
首先,让我们创建一个简单的用户支架
$ bin/rails generate scaffold user name email login
$ bin/rake db:migrate
Action Mailer与Active Job很好地集成在一起,因此您可以在请求-响应周期之外发送电子邮件,因此用户不必等待-
class UsersController < ApplicationController
# POST /users
# POST /users.json
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
# Tell the UserMailer to send a welcome email after save
UserMailer.welcome_email(@user).deliver_later
format.html { redirect_to(@user, notice: 'User was successfully created.') }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: 'new' }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
end
现在,使用http://127.0.0.1:3000/users/new测试您的应用程序。它显示以下屏幕,通过使用此屏幕,您可以将消息发送给任何人。
这将发送您的消息,并显示文本消息“消息已成功发送”,并输出如下:
sent mail to kittuprasad700@gmail.com (2023.Sms)
[ActiveJob] [ActionMailler::DeliveryJob] [2cfde3c-260e-4a33-1a6ada13a9b] Date: Thu, 09 Jul 2015 11:44:05 +0530
From: notification@example.com
To: kittuprasad700@gmail.com
Message-Id: <559e112d63c57_f1031e7f23467@kiranPro.mail>
Subject: Welcome to My Awesome Site
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="--mimepart_559e112d601c8_f1031e7f20233f5";
charset=UTF-8
Content-Transfer-Encoding:7bit
有关如何使用Rails发送电子邮件的更多信息,请访问ActionMailer 。