Latest web development tutorials

روبي إرسال البريد - SMTP

SMTP (بروتوكول نقل البريد البسيط) الذي هو بروتوكول نقل البريد البسيط، الذي هو عبارة عن مجموعة من القواعد لنقل الرسائل من المصدر إلى الوجهة، والتي لديها للسيطرة على طريق رسائل العبور.

تقدم روبي نت :: SMTP لإرسال البريد الإلكتروني، ويوفر طريقتين وبداية جديدة:

طريقةجديدة معلمتين:

  • وLOCALHOSTاسم الخادمالافتراضي
  • رقم المنفذالافتراضي هو 25

طريقةابدأ يحتوي المعلمات التالية:

  • الخادم -IP خادمSMTP،الافتراضي هو المضيف المحلي
  • ميناء -رقم المنفذ الافتراضي هو 25
  • نطاق -المجال مرسل البريد، الافتراضي ENV [ "HOSTNAME"]
  • الحساب -اسم المستخدم، الافتراضي هو لا شيء
  • كلمة -كلمة المرور الخاصة بالمستخدم، الافتراضي هو لا شيء
  • authtype -نوع المصادقة، الافتراضي هوcram_md5

يدعو SMTP أسلوب كائن مثيل تنسخ، المعلمات التالية:

  • المصدر -سلسلة أو مجموعة من كل التكرار أو أي شيء في أي وقت في العودة.
  • مرسل -سلسلة التي تظهر في شكل حقل البريد الإلكتروني.
  • المتلقين -سلسلة أو مجموعة من السلاسل التي تمثل عنوان المستلم.

أمثلة

وفيما يلي برنامج نصي روبي بسيط لإرسال البريد:

require 'net/smtp'

message = <<MESSAGE_END
From: Private Person <[email protected]>
To: A Test User <[email protected]>
Subject: SMTP e-mail test

This is a test e-mail message.
MESSAGE_END

Net::SMTP.start('localhost') do |smtp|
  smtp.send_message message, '[email protected]', 
                             '[email protected]'
end

في المثال أعلاه، قمت بإعداد رسالة البريد الإلكتروني الأساسية، وإيلاء الاهتمام إلى تنسيق العنوان الصحيح. رسالة بالبريد الالكتروني إلى أن يكون من، إلى، والموضوع، بين النص ومعلومات رأس يتطلب سطر فارغ.

استخدام نت :: SMTP للاتصال خادم SMTP على الجهاز المحلي لإرسال الرسائل باستخدام عملية send_message، المعلمات عملية لمرسل الرسالة مع البريد المتلقي.

إذا كنت لا تعمل على خادم SMTP على الجهاز، يمكنك استخدام الاتصال SMTP صافي :: مع خادم SMTP البعيد. إذا كنت تستخدم خدمات البريد الإلكتروني (مثل هوتميل أو ياهو ميل)، ومزود البريد الإلكتروني تتضمن تفاصيل عن الخادم إرسال البريد لك:

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 من خادم البريد.


إرسال البريد الإلكتروني HTML مع روبي

نت :: تقدم SMTP أيضا دعم لإرسال الرسائل في تنسيق HTML.

عند إرسال البريد الإلكتروني الذي يمكن أن يحدد النسخة MIME، نوع الوثيقة مجموعة الأحرف لإرسال رسائل بتنسيق HTML.

أمثلة

تستخدم الأمثلة التالية لإرسال رسائل بتنسيق HTML:

require 'net/smtp'

message = <<MESSAGE_END
From: Private Person <[email protected]>
To: A Test User <[email protected]>
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, '[email protected]', 
                             '[email protected]'
end

إرسال البريد مع المرفقات

إذا كنت في حاجة الى ارسال المحتوى المختلط من البريد الإلكتروني، تحتاج إلى تعيين نوع المحتوى هو متعدد الأجزاء / مختلط. حتى تتمكن من إضافة مرفق في محتوى الرسالة.

ملحق قبل نقل يتطلب استخدام حزمة ( "م") وظيفة تحويل محتوياته إلى تنسيق base64 في.

أمثلة

والمثال التالي إرسال مرفقات كبريد إلكتروني /tmp/test.txt:

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 <[email protected]>
To: A Test User <[email protected]>
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, '[email protected]',
                          ['[email protected]'])
  end
rescue Exception => e  
  print "Exception occured: " + e  
end  

ملاحظة: يمكنك تحديد عنوان تعدد الإرسال، ولكن يتطلب استخدام الفواصل.