ruby on rails爬坑(五):配置邮件服务器

Ruby 发送邮件 - SMTP 在Ruby中使用SMTP发送邮件是一个相对简单的过程。通过配置SMTP服务器、设置邮件内容,然后使用Mailgem或Net::SMTP库发送邮件,你可以轻松地实现邮件发送功能。记得在发送邮件时,确保遵守相关的电子邮件发送规则和最佳实践,以避免被识别为垃圾邮件。 阅读详情

前言

一个月前就完成的功能,现在才放上来算是补上吧,之前挖了很多坑,慢慢填。

需求比较简单,就是当用户在平台上报名成功后,邮件服务器会将报名信息发送到我们客服的邮箱。

邮件发送演示

超级简单的功能,但是因为一些配置问题,还是折腾了半个小时,希望这篇简单的配置博客能帮大家省下20分钟。

配置

①生成mailer相关文件

rails generate mailer NAME [method method] [options]

上面是命令格式,下面是命令,命名可根据个人喜好:

rails g mailer MyMailer

②注册邮箱并开通SMTP
怎么注册就不说了,这里以网易邮箱为例(我注册了一个xxx@yeah.net),注册完之后在设置里开启SMTP服务,并设置客户端授权密码(很重要,后面要用到)。

网易邮箱设置

开启SMTP服务

设置客户端授权密码

这一步记住两个信息:

客户端授权密码
服务器地址,见图二红框部分(不同邮箱服务器有不同的地址,请自己查询)

③rails中简单配置
执行了①中的命令后,rails会在app目录中生成一个mailers文件夹,里面包含了所有的相关文件。

application_mailer.rb
my_mailer.rb(根据名字自动生成)

这两个文件的简单配置如下:

#application_mailer.rb

class ApplicationMailer < ActionMailer::Base
  default from: "xxx@yeah.net"
  layout 'mailer' #指定了邮件的HTML模板,对应views/layouts/mailer.html.slim,也可以指定其他模板
end
#my_mailer.rb

class MyMailer < ApplicationMailer

  #自定义发送邮件函数
  def send_mail(to, title, u_id, m_id)
    #发送的内容取决于你的业务逻辑,仅供参考
    #这里发送了用户和任务的信息
    @user = User.select("name, phone").find(u_id)
    @user.phone = "tel:" + @user.phone
    @mission = Mission.select("title").find(m_id) 
    title = title +" "+ @user.name + "-" + @mission.title

    #返回mail对象
    mail( 
      :subject => title,   
      :to => to,   
      :from => "xxx@yeah.net",   
      :date => Time.now  
    )   
  end
end

补充,mailer.html.slim(用了slim模板):

body
  h3 报名通知
  div = @user.name
  div
    a [href=@user.phone] =<> @user.phone
  div = @mission.title

④rails邮件环境配置(重要)

#production.rb
Rails.application.configure do
    #...只是为了演示邮箱配置的位置,所以省略了其余的配置...
    ActionMailer::Base.delivery_method = :smtp  
    config.action_mailer.perform_deliveries = true  
    config.action_mailer.raise_delivery_errors = true  
    config.action_mailer.default :charset => "utf-8"  
    ActionMailer::Base.smtp_settings = {    
        :address => "smtp.yeah.net", #邮件服务器地址 
        :port => 25,  
        :domain => "yeah.net", #服务器域名,如xxx@yeah.net域名就是yeah.net
        :authentication => :login,   
        :user_name => "xxx",  #邮件用户名,如xxx@yeah.net用户名就是xxx
        :password => "your_smtp_code",  #与登录密码不同,此处是客户端授权密码,切记!
  }
end

⑤发送邮件

    #调用之前定义的函数
    MyMailer.send_mail("这是收件人地址", "这是标题", params[:user_id], params[:mission_id]).deliver 

建议

既然rails的环境有development,test,production三种,那么邮箱的配置也可以配置三份,邮箱的配置参考上面的配置即可,下面主要讲讲客服邮箱地址的配置(收件人)。

在相应配置文件中加入:

#development.rb
config.x.service_mail = "for_dev@163.com"
#production.rb
config.x.service_mail = "for_prod@163.com"

发送邮件时:

send_to = Rails.configuration.x.service_mail
MyMailer.send_mail(send_to, "这是标题", params[:user_id], params[:mission_id]).deliver

这样在开发环境和产品环境的收件人就不一样了,有利于测试和正常运营。

一些想法

很简单的东西,但每次实践都有新的想法。

  • 邮件内容是HTML文档,看来自己知识面太窄了。既然是HTML文档,那可玩性就很高啦。
  • 有时候发邮件会被分到垃圾邮件里面,现在的邮件过滤器大多使用基于贝叶斯概率的学习算法吧,注意邮件用词能减少成为垃圾的可能。
  • 上面虽然只实现了用户报名通知客服的简单功能,但是邮件的玩法还有很多,例如通知用户一些活动,作为找回/修改密码的验证都可以。

多做多思考。

使用Ruby编程发送电子邮件 在Ruby编程中,我们可以使用简单而强大的库来发送电子邮件。无论是发送简单的文本邮件还是包含附件的复杂邮件,Ruby的邮件发送库都能满足我们的需求。你可以根据实际需求修改代码中的信息,例如将邮件服务器地址改为你自己的服务器地址,将发件人邮箱地址和收件人邮箱地址改为实际的邮箱地址。接下来,我们设置了邮件服务器的相关信息,包括服务器地址、端口、用户名和密码等。安装完成后,我们可以开始编写发送电子邮件的代码。首先,我们需要安装Ruby的邮件发送库。方法设置了邮件发送的默认选项,将使用SMTP协议进行邮件传输。 阅读详情

相关推荐

深入探讨Rails中的动态SMTP配置

摘要:本文介绍了在Ruby on Rails中实现动态SMTP配置的方法,允许不同用户使用各自的邮件服务器发送邮件。通过ActionMailer和用户模型关联SMTP设置,可以灵活处理包括无认证在内的各种SMTP场景。文章详细说明了配置步骤,并强调测试的重要性以确保生产环境稳定性。

2501_90323865的博客 36

Ruby on rails 发送邮件的Smtp配置---163邮箱 、通用配置

ruby on rails 发送邮件 smtp配置信息整理,官方怎么给的你对照就行了 ,我这个是封装到文件里了。要是改的话 自己找一下对应的参数。一些其他邮箱基本配置整理了一下。

weixin_42800181的博客 1898

Ruby语言 SendCloud邮件发送 邮件模板 发送代码

SendCloud Ruby模板发送代码示例,注:此为使用 SendCloud API V2 发送邮件的示例.

ruby写的使用smtp协议发送邮件

require net/smtprequire ftoolsrequire getoptlong$tomail=""$subject=""$content=""$filename=""$i=0def help() puts "Usage:/nsendemail [option] [file]" puts "/t--to -t destina

S/W测试人 1794

别再傻傻分不清!一文讲透电子产品‘冲击’与‘碰撞’试验的区别与选用(附GB/T 2423标准解读)

本文详细解析了电子产品可靠性测试中冲击与碰撞试验的核心区别与应用场景,结合GB/T 2423标准提供实用指南。冲击测试模拟瞬时高强度事件(如跌落),而碰撞测试针对重复性力学环境(如运输颠簸)。通过参数对比和标准解读,帮助研发人员精准选择测试方案,提升产品可靠性验证效率。

weixin_42665255的博客 266

【高等数值分析】Krylov子空间方法

文章目录1. 预备理论1.1 Krylov 子空间1.2 最佳逼近1.2.1 方法一:最佳平方逼近1.2.2 方法二:假设 AAA 对称正定1.2.3 方法三:残差2范数2. 基底正交化2.1 Arnoldi 过程(CGS)2.2 改进 Arnoldi 过程(MGS)2.3 Lanczos过程3. 方程组求解3.1 全正交方法 (FOM)3.2 D-Lanczos方法3.3 广义极小残量法(GMRES)3.4 MINRES 方法 1. 预备理论 现在需要求解一个大规模稀疏方程组 Ax=bAx=bAx=b,可

Glooow的博客 1万+

Rails Mail

Rails Mail 以一个密码找回的实例来演示rails发送邮件:使用的是公司的邮件服务器,如果没有邮件服务器,可以本地安装一个邮件服务器,具体方法可以baidu、google1.在environment.rb中配置邮件参数:   Rails::Initializer.run do |config|         #config.action_mailer.deliver_me

harbey的专栏 1198

用户消费行为分析(MapReduce实现,Hive分析)

一、题目要求 数据来自CDNow网站的一份用户购买CD明细,本数据集共有 6 万条 左右数据,数据为 CDNow 网站 1997年1月至1998年6月的用户行为 数据

紫烟的博客 3013

Ruby on Rails邮件Mailer和上传附件paperclip

最近Rails项目的最后两个功能就是进行邮件通知和上传附件管理,这里使用了Rails框架下的ActionMailer和paperclip两个来完成的 一、ActionMailer使用 首先要忽略邮件的错误,进入config/environments,打开development.rb文件,将config.action_mailer.raise_delivery_errors设定为false c

ysc6688的专栏 1817

ZYNQ程序固化实战:从BOOT.bin生成到QSPI/SD卡双启动模式详解

本文详细解析了ZYNQ 7000系列程序固化的完整流程,重点解决了程序断电丢失问题。通过实战演示,从生成BOOT.bin文件到配置QSPI与SD卡双启动模式,逐步指导开发者实现程序在外部存储中的永久驻留,确保产品脱离调试器独立运行。

weixin_29193259的博客 517

在没有信用卡的情况下怎么申请谷歌云(Google Cloud)?

这笔额度足够用来跑一台云服务器、部署小型网站,甚至可以尝试 AI、机器学习等项目。但问题来了——想要拿到这 300 美元,你必须先通过支付方式验证。默认选项就是绑定一张国际信用卡(Visa、MasterCard 之类),然而不少人没有信用卡,或者信用卡无法支持国际支付,结果就卡在注册第一步。很多人会疑惑:既然是送额度,为什么还要绑卡?原因其实很简单:谷歌需要确认你是真实用户,而不是批量注册薅羊毛;通过支付验证,后续如果你用完 300 美元额度,可以直接进行付费使用;

m0_74824483的博客 5651

如何5分钟内为Rails应用集成letter_opener_web:完整的安装配置指南

🚀 **letter_opener_web** 是Ruby on Rails开发者的终极邮件调试神器!如果你正在寻找一种简单、快速的方式来预览和调试Rails应用发送的邮件,那么这个完整的安装配置指南正是你需要的。作为letter_opener的Web界面扩展,letter_opener_web让你在开发环境中轻松浏览所有发送的邮件,无需配置真实的邮件服务器。 ## 📧 为什么选择lette

gitblog_00824的博客 482

Windowns下Git环境配置-命令行方式

文章目录一、配置Git1.1 下载Git并安装1.2 配置本地Git用户名和邮箱1.3 注册GitHub二、生成本地公钥,放到GitHub上-SSH Key2.1 生成本地公钥命令2.2 查看生成的公钥2.3 在GitHub放上公钥并测试连通性三、创建项目实操四、可能出现的问题4.1.push不成功4.2.提示SSL的问题4.3.域名不能解析的问题4.4.如果github连接不上的问题 一、配置Git 1.1 下载Git并安装 Git官网 默认安装,根据需要修改安装路径 1.2 配置本地Git用户名和邮箱

学习工作笔记 1135

Ruby on Rails 发送邮件环境设置

运行环境: ruby 1.8.6 rails 1.2.5 gem 1.0.1 这里用的是gmail的服务器,由于rails中的actionMailer不支持TLS(SSL)连接,但这却是Gmail SMTP服务器唯一的传输方式。网上已经有专门这个问题提供的plugin,下面总结一下配置的具体步骤: 1.安装插件: 打开cmd,进入rails项目的目录 输入 ruby script...

Sink的专栏 582

别再无脑调打码平台了!聊聊 ddddocr 在爬虫验证码识别中的真实边界

ddddocr是国产开源社区的优秀成果,它大幅降低了验证码识别的入门门槛。工具的自由不等于工程的自由。真正的能力不在于“会不会调库”,而在于能否准确判断工具的适用边界、构建鲁棒的容错机制、并在成本与效果之间做出理性权衡。下次当你准备在爬虫中加入验证码识别时,不妨先问自己:这个站点的验证码类型是否在ddddocr的能力圈内?我的预处理是否针对该站点做过专项调试?我的失败重试和监控机制是否完备?如果三个问题都能肯定回答,那么ddddocr就是你的利器;如果有任何一个犹豫,请先补齐短板再上路。评论区交流:你用。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1280

主成分分析(Principal Component Analysis,PCA)

主成分分析1.主成分分析1.1 降维(Dimensionality Reduction)1.2 均值(Mean)1.3 方差(Variance)1.4 协方差(Covariance)1.5 协方差矩阵(Covariance Matrix)1.6 线性变换(Linear Transformation)1.7 主成分分析(PCA)1.8 PCA和SVD的关系 1.主成分分析 关于PCA的介绍:用最直观的方式告诉你:什么是主成分分析PCA 笔记来源:Principal Component Analysis (PC

一个搬运知识的笨小孩 3227

Toonflow 导演规划 Agent 实战指南:基于剧本分场、台词统计与情绪分析产出结构化 scriptPlan

在 Toonflow 的 AI 短剧制作流水线中,「导演规划」是执行层的第一个产出阶段:它把一段剧本忠实拆分为场次,逐场统计台词数量、分析情绪浓度、设计场间过渡,最终产出一份只面向下游 Agent 解析的结构化拍摄计划 `<scriptPlan>`。本文以仓库中的技能指令文档 [production_execution_director_plan.md](https://link.gitcode.

gitblog_01062的博客 987

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Ruby on Rails (4)

听着《Traveling Light 》继续我们的学习。这次我们用命令行执行,打开cmd,改变目录到RuBymineProjects下 1.新建rails工程 rails new Demo6 -d=mysql 这句命令意思是新建一个名称为Demo6的rails工程,并且使用mysql数据库。然后你会看到好多create语句和using语句。。。 2.配置devise 修改

青竹剑侠 1587

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[Ruby on Rails]Rails 3使用ActionMailer通过163发送邮件

最近用到发送邮件的功能,没办法只能现学,天生愚钝啊,用了两天才弄明白了。。记录一下 --------------------------------------------------- 在models 里边新建一个mailer 模型 class Notifier < ActionMailer::Base def send_mail(params = {}) ...

weixin_30387423的博客 180

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

letter_opener_web vs 传统邮件调试:为什么它是开发环境的最佳选择?

letter_opener_web是一款专为Ruby on Rails开发环境设计的邮件调试工具,它提供了直观的Web界面来浏览应用发送的邮件。相比传统邮件调试方式,它能显著提升开发效率,让开发者更轻松地测试和验证邮件功能。 ## 📌 传统邮件调试的痛点 在开发Ruby on Rails应用时,传统的邮件调试方法往往存在以下问题: - **配置复杂**:需要设置真实的邮件服务器或使用第三方

gitblog_00669的博客 355

Postal邮件服务器开发环境搭建:从源码编译到测试邮件发送的全流程指南

Postal是一款功能强大的开源邮件交付平台,支持入站和出站邮件的完整处理流程。本文将为您详细介绍如何在本地搭建Postal开发环境,包括源码编译、依赖安装、测试邮件发送以及调试工具链的完整配置流程。 ## 🚀 环境准备与依赖安装 首先克隆Postal源码仓库到本地: ```bash git clone https://gitcode.com/gh_mirrors/po/postal cd

gitblog_00451的博客 582

letter_opener_web在Docker和Vagrant环境中的完美部署方案

letter_opener_web是一款为Ruby on Rails应用提供已发送邮件浏览界面的工具,它能帮助开发者在开发环境中轻松查看和测试邮件功能。本文将详细介绍如何在Docker和Vagrant这两种主流开发环境中部署letter_opener_web,解决环境配置难题,提升开发效率。 ## 快速了解letter_opener_web letter_opener_web是[letter_

gitblog_00698的博客 1001

【写给朱大虫的教程】【Ruby on Rails】【006】遵循Rails理念的快速实现

前言: 上两节我们讲了用户的添加、登录……,这一次我们遵循Rails的理念,快速实现用户的注册、登录…… 理念: 1、少就是多 2、不要重复制造轮子 开始: 1、新建rails工程 $ rails new r2 -d=mysql 配置Gemfile文件,添加一句: gem 'devise' #devise是一个gem包...

weixin_30312659的博客 345

Ubuntu22.04上iRedMail邮件服务器搭建全攻略:从下载到配置的避坑指南

本文提供在Ubuntu 22.04系统上部署iRedMail邮件服务器的完整实战指南。内容涵盖从系统环境准备、DNS记录配置、自动化安装脚本执行,到安装后的SSL证书部署、安全加固及常见故障排查,旨在帮助用户高效搭建稳定、安全的企业级邮件系统,并规避常见陷阱。

z4a5b6的博客 502

【Ruby on Rails全栈课程】3.7 邮件发送(SendCloud、MailGun)

1、邮件发送介绍 首先需要发送平台作为中介来为我们发送邮件,我们介绍两个邮件发送平台,其中SendCloud我们用来做我们实际的项目。MailGun平台适合付费用户,我们了解一下即可。 SendCloud(https://sendcloud.sohu.com/) SendCloud平台发送设置比较简单,不需要有自己的域名,可以不进行DNS配置,每天可以免费发送邮件10到50封 MailGu...

腾讯云云开发布道师,慕课网合作讲师 3159
上一篇: 浅谈图片加载:逐行扫描VS交错扫描
下一篇: Safari不能正确解析yyyy-mm-dd
Sheldon_Law
博客等级 码龄11年 44粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值