如何用纯Ruby脚本实现邮件发送?已掌握Rails框架发送方法
当然可以!纯Ruby脚本完全能搞定邮件发送,根本不需要依赖Rails框架。我平时常用两个gem来实现这个需求,给你详细说说:
方案一:使用
mail gem(功能强大,灵活性高) mail是Ruby生态里专门处理邮件的经典gem,支持各种邮件格式(纯文本、HTML、附件等),配置也很灵活。
步骤1:安装gem
在终端执行:
gem install mail
步骤2:编写发送脚本
require 'mail' # 配置SMTP服务器信息(这里以Gmail为例,其他邮箱替换对应参数即可) Mail.defaults do delivery_method :smtp, { address: 'smtp.gmail.com', port: 587, domain: 'gmail.com', user_name: 'your_email@gmail.com', password: 'your_app_password', # Gmail需要用应用密码,不是原密码 authentication: 'plain', enable_starttls_auto: true } end # 构建并发送邮件 mail = Mail.new do from 'your_email@gmail.com' to 'recipient@example.com' subject '纯Ruby脚本发送的测试邮件' body '这是通过纯Ruby脚本+mail gem发送的邮件内容!' # 如果要发HTML邮件,用 html_part : # html_part do # content_type 'text/html; charset=UTF-8' # body '<h1>测试HTML邮件</h1><p>这是HTML格式的内容</p>' # end end mail.deliver! puts "邮件发送成功!"
方案二:使用
pony gem(简洁易用,封装度高) 如果你的需求比较简单,pony是个不错的选择——它基于mail gem做了封装,代码更简洁,适合快速实现基础邮件发送。
步骤1:安装gem
gem install pony
步骤2:编写发送脚本
require 'pony' # 直接调用Pony.mail发送,一步到位 Pony.mail( from: 'your_email@gmail.com', to: 'recipient@example.com', subject: 'Pony gem测试邮件', body: '这是用Pony gem快速发送的纯Ruby邮件!', via: :smtp, via_options: { address: 'smtp.gmail.com', port: 587, domain: 'gmail.com', user_name: 'your_email@gmail.com', password: 'your_app_password', authentication: 'plain', enable_starttls_auto: true } ) puts "邮件发送成功!"
注意事项
- 不同邮箱的SMTP配置不一样:比如QQ邮箱的SMTP地址是
smtp.qq.com,端口587,密码需要用授权码;Outlook的SMTP地址是smtp.office365.com。 - 很多邮箱现在都要求开启SMTP服务,并且使用应用密码/授权码代替原密码(比如Gmail、QQ邮箱),需要先在邮箱设置里开启对应服务并生成授权码。
- 如果需要发送附件,
mail和pony都支持,比如在mail里用add_file 'path/to/attachment.pdf',在pony里用attachments: { 'filename.pdf' => File.read('path/to/attachment.pdf') }。
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

