Ruby 发送邮件 - SMTP学习笔记
简介
本文将介绍如何使用Ruby发送邮件,并基于SMTP协议展开讲解。
SMTP简介
SMTP是Simple Mail Transfer Protocol的缩写,即简单邮件传输协议。它是一种用于发送和接收电子邮件的标准协议,SMTP是TCP/IP协议族的一部分,由RFC 821规范定义。实现SMTP协议的服务器通常监听TCP协议的25端口,而客户端则通过TCP协议的25端口与服务器建立连接,进行SMTP通信。
Ruby发送邮件
在Ruby中,我们可以使用Net::SMTP
模块来发送邮件。这个模块提供了一个SMTP客户端的实现,可以用于连接SMTP服务器并发送邮件。
连接SMTP服务器
使用Net::SMTP.start
方法连接SMTP服务器,它需要三个参数:SMTP服务器地址、SMTP服务器端口号、以及可选的域名(默认为“localhost”)。
rubyCopy Coderequire 'net/smtp'
smtp = Net::SMTP.start('smtp.example.com', 25)
发送邮件
连接服务器成功后,我们可以使用smtp.send_message
方法来发送邮件。该方法需要4个参数:邮件内容、发件人地址、收件人地址(可以是多个地址),以及可选的抄送地址和密送地址。
rubyCopy Coderequire 'net/smtp'
message = <<MESSAGE_END
From: Ruby SMTP <ruby@smtp.com>
To: John Doe <johndoe@example.com>
Subject: SMTP Email Test
This is a test email sent from Ruby SMTP.
MESSAGE_END
smtp = Net::SMTP.start('smtp.example.com', 25)
smtp.send_message message, 'ruby@smtp.com', 'johndoe@example.com'
smtp.finish
完整示例
rubyCopy Coderequire 'net/smtp'
message = <<MESSAGE_END
From: Ruby SMTP <ruby@smtp.com>
To: John Doe <johndoe@example.com>
Subject: SMTP Email Test
This is a test email sent from Ruby SMTP.
MESSAGE_END
smtp = Net::SMTP.start('smtp.example.com', 25)
smtp.send_message message, 'ruby@smtp.com', 'johndoe@example.com'
smtp.finish
实例
假设我们要向多个收件人发送一封HTML格式的邮件,可以使用以下代码:
rubyCopy Coderequire 'net/smtp'
message = <<MESSAGE_END
From: Ruby SMTP <ruby@smtp.com>
To: John Doe <johndoe@example.com>, Jane Doe <janedoe@example.com>
Cc: Alice <alice@example.com>
Subject: SMTP Email Test
Content-Type: text/html; charset=UTF-8
<html>
<head></head>
<body>
<p>This is a test email sent from <strong>Ruby SMTP</strong>.</p>
</body>
</html>
MESSAGE_END
smtp = Net::SMTP.start('smtp.example.com', 25)
smtp.send_message message, 'ruby@smtp.com', ['johndoe@example.com','janedoe@example.com'], ['alice@example.com']
smtp.finish
在上面的示例中,我们使用了Cc
(抄送)参数来添加一个抄送地址,并使用了Content-Type
参数来指定邮件内容为HTML格式。
结语
本文通过介绍SMTP协议以及Ruby的Net::SMTP
模块,帮助读者了解如何使用Ruby发送邮件。如果您有任何疑问,欢迎在评论区留言。