萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> 程式語言綜合

Ruby Net::SMTP 發送郵件完整教學:純文字、HTML 郵件與附件寄送

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

start 方法參數

參數預設值說明
serverlocalhostSMTP 伺服器主機名或 IP
port25連接埠
domainENV["HOSTNAME"]HELO 域名
accountnil驗證帳號
passwordnil驗證密碼
authtypecram_md5驗證類型

發送 HTML 郵件

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)並妥善處理認證。

copyright © 萬盛學電腦網 all rights reserved