使用ruby的MailFactory类发送附件

  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”变量则也可运行成功。

     

        

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值