บทช่วยสอน ทับทิมส่งจดหมาย - SMTP ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ ส่งอีเมล HTML ที่มีทับทิม,ส่งอีเมล์พร้อมแนบ,
SMTP (เอสเอ็มทีพี) ที่เป็น Simple Mail Transfer Protocol ซึ่งเป็นชุดของกฎสำหรับการส่งข้อความจากต้นทางไปยังปลายทางซึ่งจะมีการควบคุมวิธีการตัวอักษรของการขนส่ง
ทับทิมมี Net :: SMTP ในการส่งจดหมายและให้สองวิธีและการเริ่มต้นใหม่
วิธีการใหม่ที่มีสองพารามิเตอร์:
วิธีการเริ่มต้นมีพารามิเตอร์ต่อไปนี้:
SMTP วิธีวัตถุ instantiation เรียก sendmail พารามิเตอร์ต่อไปนี้:
ต่อไปนี้จะมีสคริปต์ทับทิมง่ายที่จะส่งอีเมล:
require 'net/smtp' message = <<MESSAGE_END From: Private Person <me@fromdomain.com> To: A Test User <test@todomain.com> 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ในตัวอย่างข้างต้นคุณได้ตั้งค่าข้อความอีเมลขั้นพื้นฐานให้ความสนใจในรูปแบบที่ถูกต้องชื่อ E-mail มาที่ได้มาจากการ, เพื่อให้, และเรื่องระหว่างข้อความและข้อมูลส่วนหัวต้องมีบรรทัดว่าง
ใช้ Net :: SMTP เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ SMTP ในเครื่องท้องถิ่นในการส่งข้อความโดยใช้กระบวนการ send_message พารามิเตอร์กระบวนการในการส่งข้อความที่มีอีเมลผู้รับ
ถ้าคุณไม่ได้ทำงานบนเซิร์ฟเวอร์เครื่องของคุณสามารถใช้การสื่อสาร SMTP สุทธิ :: มีเซิร์ฟเวอร์ระยะไกล หากคุณใช้บริการเว็บเมล์ (เช่น Hotmail หรือ Yahoo Mail) ผู้ให้บริการอีเมลของคุณจะให้รายละเอียดของเซิร์ฟเวอร์การส่งจดหมายสำหรับคุณ:
Net::SMTP.start('mail.your-domain.com')
รหัสดังกล่าวจะเชื่อมต่อโฮสต์ mail.your-domain.com จำนวน 25 พอร์ตของเซิร์ฟเวอร์อีเมลถ้าคุณต้องกรอกชื่อผู้ใช้และรหัสผ่านรหัสเป็นดังนี้:
Net::SMTP.start('mail.your-domain.com', 25, 'localhost', 'username', 'password', :plain)
ตัวอย่างข้างต้นใช้ชื่อผู้ใช้และรหัสผ่านเพื่อเชื่อมต่อกับโฮสต์ที่ระบุไว้ mail.your-domain.com จำนวน 25 พอร์ตของเซิร์ฟเวอร์อีเมล
สุทธิ :: SMTP ยังให้การสนับสนุนสำหรับการส่งข้อความในรูปแบบ HTML
เมื่อส่ง E-mail ที่คุณสามารถตั้งค่ารุ่น MIME พิมพ์เอกสารชุดอักขระในการส่งข้อความในรูปแบบ HTML
ตัวอย่างต่อไปนี้จะใช้ในการส่งข้อความในรูปแบบ HTML:
require 'net/smtp' message = <<MESSAGE_END From: Private Person <me@fromdomain.com> To: A Test User <test@todomain.com> 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 <b>This is HTML message.</b> <h1>This is headline.</h1> MESSAGE_END Net::SMTP.start('localhost') do |smtp| smtp.send_message message, 'me@fromdomain.com', 'test@todomain.com' end
หากคุณจำเป็นต้องส่งเนื้อหาผสมของ e-mail ของคุณต้องกำหนดชนิดของเนื้อหาเป็น multipart / ผสม เพื่อให้คุณสามารถเพิ่มสิ่งที่แนบในเนื้อหาข้อความ
อุปกรณ์เสริมก่อนที่จะโอนนั้นจะต้องใช้แพ็ค ( "M") ฟังก์ชันแปลงเนื้อหาในรูปแบบ base64
ตัวอย่างต่อไปนี้จะส่งสิ่งที่แนบมาเป็น /tmp/test.txt E-mail:
require 'net/smtp' filename = "/tmp/test.txt" # 读取文件并编码为base64格式 filecontent = File.read(filename) encodedcontent = [filecontent].pack("m") # base64 marker = "AUNIQUEMARKER" body =<<EOF This is a test email to send an attachement. EOF # 定义主要的头部信息 part1 =<<EOF From: Private Person <me@fromdomain.net> To: A Test User <test@todmain.com> Subject: Sending Attachement MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=#{marker} --#{marker} EOF # 定义消息动作 part2 =<<EOF Content-Type: text/plain Content-Transfer-Encoding:8bit #{body} --#{marker} EOF # 定义附件部分 part3 =<<EOF Content-Type: multipart/mixed; name=\"#{filename}\" Content-Transfer-Encoding:base64 Content-Disposition: attachment; filename="#{filename}" #{encodedcontent} --#{marker}-- EOF mailtext = part1 + part2 + part3 # 发送邮件 begin Net::SMTP.start('localhost') do |smtp| smtp.sendmail(mailtext, 'me@fromdomain.net', ['test@todmain.com']) end rescue Exception => e print "Exception occured: " + e end
หมายเหตุ: คุณสามารถระบุที่อยู่ของจำนวนมากของการส่ง แต่ต้องใช้จุลภาค