使用ruby的MailFactory類發送附件

來源:互聯網
上載者:User

  NET::SMTP 發送郵件很簡單,但是它不支援直接發送附件。可以通過安裝MailFactory來實現該功能

  1)安裝MailFactory

       執行:gem install mailfactory

 

  2)支援中文

       預設安裝好後的MailFactory對中文支援不好,我們可以通過修改其原始碼的方式來解決該問題,開啟下載下來的MailFactory.rb,找到“def initialize()”方法,將字元編碼由UTF-8改為 GBK

       @charset = 'gbk'

 

      這樣郵件中的中文就可以正確顯示了

 

 3)發送郵件的代碼(sendMail.rb)

 

  require 'net/smtp'
  require 'rubygems'
  require 'mailfactory'

 

 

  mail = MailFactory.new()

 

  #加了join(',")後, 收件者在郵箱裡看到的收件者清單為:xx1 <xx1@qq.com>; xx2<xx2@qq.com>
  #否則看到的是:xx1@qq.comxx2@qq.com  ,使用者之間沒有逗號分隔
  mail.to = [xx1@qq.com',xx2@qq.com'].join(',')
  mail.from = "send@163.com"
  mail.subject = "ruby發送郵件附件測試!"
  mail.text = "你能否成功收到郵件和附件,有無亂碼?"
  #mail.html = "簡單的測試 <b>中文</b> 是否亂碼"
  mail.attach("D://script//ruby//測試附件.txt")
  mail.attach("D://script//ruby//中文正常abc.doc")

  #另外聲明一個接收人的地址清單
  to = ['18227163@qq.com','824814503@qq.com']

  Net::SMTP.start('smtp.163.com', 25, '163.com', 'tesge@163.com', '密碼XXX', :plain)  { |smtp|
#     mail.to = toaddress
    smtp.send_message(mail.to_s(),send@163.com', ['xx1@qq.com','xx2@qq.com'])
   }

 

紅色字型部分表示內送郵件人的地址,這裡不能直接使用“mail.to”參數,否則郵件會發送失敗,產生一個“550,無效使用者”的錯誤。用上面聲明的“to”變數則也可運行成功。

     

        

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.