1.安装;
2.创建模型,这里有比较多的选项,下面的例子是创建带有激活功能的模型;
ruby script/generate authenticated user sessions --include-activation
a.创建了三个模型,user.rb,user_mailer.rb,user_observer.rb
user.rb定义了用户模型。
user_mailer定义了邮件模型;
user_observer定义了观察模型;
b.创建了两个控制器:sessions_controller.rb;users_controller.rb;session控件用于登录;user控件用户注册等功能。
c.创建了几个视图文件:
sessions/new.html.erb
users/new.html.erb
user_mailer/activation.html.erb
user_mailer/signup_notification.html.erb
然后rake
3.修改route.rb,让显示变得更加人性化
#
map.activate '/activate/:activation_code', :controller => 'users', :action => 'activate'
map.signup '/signup', :controller => 'users', :action => 'new'
map.login '/login', :controller => 'sessions', :action => 'new'
map.logout '/logout', :controller => 'sessions', :action => 'destroy'
4.在initialize目录下创建一个文件,进行在系统的初始化过程中,加载
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => "mail.sina.com",
:port => 25,
:domain => "mail.sina.com",
:authentication => :login,
:user_name => "test@sina.com",
:password => "helloc"
}
mail.sina.com是smtp服务器,须准确配置这个服务器。
这里稍作解释
ActionMailer是基于Net::snmp封装,
delivery_method采用smtp
smtp_settings,就是smtp传递邮件使用的各类参数,包括smtp服务器的地址,域名,端口,采用什么验证方式(这里有三种plain,login,md5),用户名,密码
至此,用户注册的时候已经可以顺利发送邮件了。
邮件内容如下:
[YOURSITE] Please activate your new account 日期: 2010-03-17 23:46
Your account has been created.
Username: test
Password: 111111
Visit this url to activate your account:
http://YOURSITE/activate/228f5fe94f24134fbbf3234bad236404c71f2509
5.写清楚自己的网站。
在config/envirments/production.rb或者development.rb增加如下:
SITE_URL = "wooxo.cc"
注意:修改了这个文件,需要重新启动web服务;
包括前面在initialize目录新增了一个文件,也是需要重启服务,才可以生效。
6.当然需要在models/user_mailer.rb
7.修改邮件的内容。
views/users/user_mailer/sign_up_notification.erb.html
原文:
Your account has been created.
Username: <%= @user.login %>
Password: <%= @user.password %>
Visit this url to activate your account:
<%= @url %>
同样需要重启服务,才能生效。
8.差点遗漏一个要点。配置enviroment.rb
config.active_record.observers = :user_observer
目的让 user_observer和user集合关联。
def after_create(user)
UserMailer.deliver_signup_notification(user)
end
def after_save(user)
UserMailer.deliver_activation(user) if user.recently_activated?
end
可以看到,这个user_observer模型,为了盯住user这个模型,一旦user这个模型在创建或者保存的时候,就调用usermailer这个模型。
这样User/UserMailer/UserObserver三个模型就紧密的结合在一起。
这里稍微做一个解释,原来有文档说net::smtp只发送本地smtp服务器的说法不准确。
附说明:
实际上actionmail是在net::smtp之上的一个封装,当然封装的内容不止这些。但是从发信这个功能,就是基于这个包。下面介绍一个使用纯ruby代码通过smtp发送邮件的案例:
require "net/smtp"
# params :
# ARGV[0] = subject
# ARGV[1] = content
# ARGV[2] = filename
# ARGV[3] = to
def sendemail(subject,content,to=nil)
from = "test@sina.com"#自己的邮箱
to = ["test1@163.com"] if to.nil?#发送对象邮箱
sendmessage = "Subject: "+subject +"\n\n"+content#拼装一份邮件体。
smtp = Net::SMTP.start("mail.xj.net",25,"xj.net",'test','test123',:login) #准确的使用smtp服务器的域名,以及smtp验证信息。
smtp.send_message sendmessage,from,to #这才是干货,做开始进行发送
smtp.finish #发送完毕之后,关闭连接。
end
def sendemail_file(subject,filename,to)
content = ""
File.open(filename) do |file|
file.each_line {|line| content += "#{line}\n" }
end
sendemail(subject,content,to)
end
subject = ARGV[0] || "system autoly send"
content = ARGV[1] || ""
filename = ARGV[2] || ""
to = ARGV[3]
if content.to_s == "" and filename.to_s!=""
sendemail_file(subject,filename,to)
else
content = "Nothing" if content.to_s == ""
sendemail(subject,content,to)
end
保存为sendmail.rb
在ruby环境下,执行:
ruby sendmail.rb this is a test mail
这样会在system1@163.com收到一份主题为"this is a test mail"的邮件。
再附:net::smtp.start的参数,有三种方式;
# PLAIN
Net::SMTP.start('your.smtp.server', 25, 'mail.from.domain',
'Your Account', 'Your Password', :plain)
# LOGIN
Net::SMTP.start('your.smtp.server', 25, 'mail.from.domain',
'Your Account', 'Your Password', :login)
# CRAM MD5
Net::SMTP.start('your.smtp.server', 25, 'mail.from.domain',
'Your Account', 'Your Password', :cram_md5)
在编写控制器的时候,完全可以使用smtp包,直接发送邮件。
分享到:
相关推荐
RESTful API设计简洁、直观,易于理解和使用,是现代Web服务的主流实现方式。 **前端与后端交互** 在Web应用中,前端负责用户界面的展示和交互,而后端则处理业务逻辑和数据存储。RESTful请求插件扮演着两者之间的...
通过使用restful-authentication,开发者可以快速实现一套完整的用户认证系统,包括注册、登录、密码重置等功能,同时保持代码的整洁和可维护性。然而,随着Rails的发展,这个插件逐渐被devise等现代认证解决方案所...
标题中的“谷歌浏览器发送RESTful请求插件”指的是在Google Chrome浏览器中使用的扩展程序,用于方便地发送RESTful API请求。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于...
尽管最初是作为Chrome浏览器的插件,但随着其功能的发展,Postman现在也提供了独立的应用程序版本,支持Windows、Mac和Linux等操作系统。 在Chrome版本54.0.2840.87 m中,Postman v4.0.5版本可以正常运行,这意味着...
它是一个功能强大的Restful API工具包插件,可以根据已有的方法快速生成接口调试用例。它有一个漂亮的界面来完成请求、检查服务器响应、存储你的API请求和导出API请求,该插件能帮助你在IDEA内更快更高效地调试API!...
将此jar与原来的进行替换即可(不排除后续无法使用情况,当前使用版本为2023.1.6)。 替换路径: 打开安装目录: C:\Users\XXX\AppData\Roaming\JetBrains\IntelliJIdea2023.1\plugins\Restful Fast Request\lib,...
本项目“Vue结合SpringBoot注册发送邮件激活”旨在实现用户注册时通过电子邮件验证其身份的功能,这在很多网站中是常见的安全措施。下面将详细解释实现这一功能的关键步骤和技术要点。 1. **Vue.js 前端**: - **...
本资源类似于 Postman 的 IDEA 插件Restful Fast Request,在IDEA安装该插件后,找到插件安装目录,【C:\\Users\\Administrator\\AppData\\Roaming\\JetBrains\\IntelliJIdea2021.3\\plugins\\Restful Fast Request ...
在本教程中,我们将探讨如何使用 SpringMVC 实现基于 RESTful 风格的 CRUD(Create、Read、Update、Delete)操作。 **CRUD 操作概述** CRUD 操作是任何数据驱动应用的基础,它们分别代表创建新记录、读取现有记录、...
本文将深入探讨如何利用RESTful架构来实现转账业务,同时关注事务处理和并发控制这两个关键领域。 首先,让我们理解REST(Representational State Transfer,表述性状态转移)的核心原则。REST是一种网络应用程序的...
本练习将详细介绍如何使用RestfulTemplate与Ribbon结合,实现基于高可用性的负载均衡。 首先,让我们理解什么是Ribbon。Ribbon是Netflix开源的一个客户端负载均衡器,它可以在客户端进行服务请求时自动分发请求到...
描述:本实验使用SpringBoot、Mybatis和CXF框架来实现Restful API和WebService API接口的大实验,涵盖了数据库设计、 Maven依赖管理、Restful API和WebService API的实现等方面。 标签:spring boot、mybatis、...
本文将深入探讨如何使用C和C++来实现HTTP服务,并开发RESTful API服务器。 首先,HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器。它是一个基于请求与...
本篇文章将探讨如何使用Apache CXF框架来实现RESTful服务。Apache CXF是一个开源的Java框架,用于构建和开发SOAP和RESTful Web服务。 首先,我们需要了解RESTful的基本概念。REST(Representational State Transfer...
本资源为IDEA中的插件,插件版本是1.7,如果有使用或者需要使用的,请把插件名称写在评论区供他人了解,谢谢! 插件地址: C:\Users\XXX\AppData\Roaming\JetBrains\IntelliJIdea2023.1\plugins\Restful Fast ...
本文将深入探讨如何使用C++实现一个支持RESTful JSON的HTTPS服务器。RESTful架构是现代Web服务的标准设计模式,JSON则是一种轻量级的数据交换格式,广泛用于HTTP通信。 首先,我们需要了解HTTPS协议。HTTPS是在HTTP...
本教程将通过一个名为"spring-mvc-demo"的项目,详细介绍如何使用Spring框架来实现RESTful Web服务。 一、Spring MVC与RESTful Web服务 Spring MVC是Spring框架的一部分,专门用于处理Web请求和响应。RESTful Web...
- 使用CXF的WS-Security功能,可以实现安全验证,如OAuth、基本认证等。 - 利用CXF的测试工具,如CXFTestSupport,可以方便地进行服务端和客户端的集成测试。 - 使用Postman等工具,可以模拟客户端对服务端的HTTP...