Ruby Net::SMTP 提供 SMTP 客戶端功能,支援發送純文字、HTML 格式與帶附件的郵件。本文詳細說明 new/start 方法參數、send_message 用法,並提供三種郵件類型的完整範例程式碼。
require 'net/smtp'
message = <
To: A Test User
Subject: SMTP e-mail test
This is a test e-mail message.
MESSAGE_END
Net::SMTP.start('localhost') do |smtp|
smtp.send_message message, 'me@fromdomain.com', 'test@todomain.com'
end
| 參數 | 預設值 | 說明 |
|---|---|---|
| server | localhost | SMTP 伺服器主機名或 IP |
| port | 25 | 連接埠 |
| domain | ENV["HOSTNAME"] | HELO 域名 |
| account | nil | 驗證帳號 |
| password | nil | 驗證密碼 |
| authtype | cram_md5 | 驗證類型 |
message = <
To: A Test User
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP e-mail test
This is an e-mail message to be sent in HTML format
This is HTML message.
This is headline.
MESSAGE_END
Net::SMTP.start('localhost') do |smtp|
smtp.send_message message, 'me@fromdomain.com', 'test@todomain.com'
end
require 'net/smtp'
filename = "/tmp/test.txt"
filecontent = File.read(filename)
encoded = [filecontent].pack("m") # Base64 編碼
marker = "AUNIQUEMARKER"
part1 = <
To: A Test User
Subject: Sending Attachment
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=#{marker}
--#{marker}
EOF
part2 = <
注意: 實際部署請使用 TLS/SSL(Net::SMTP.start(..., :tls => true) 或連接埠 465/587)並妥善處理認證。