使用Ruby收发邮件

豆豆网   技术应用频道   2008年01月18日  【字号: 收藏本文

本文详细介绍使用Ruby收发邮件

  1、通过SMTP发送Email

  每星期Holden Glova,Pat Eyler,和Phil Thomson都会向Ruby Garden网站(http://www.rubygarden.org/)提交一个Ruby Weekly News (RWN)文章。一个Ruby脚本通过email接收这篇文章,将它从原来的xml格式转换为HTML和纯文本格式,然后将HTML格式的发表到网站,然后将纯文本格式的文章发到邮件列表。如果这中间出现什么问题(比如xml文档结构不对等),这个脚本将向发送者发送一封包含错误信息的email。

  这个脚本用Net::SMTP(Simple Mail Transfer Protocol)库发送email。清单 1是这个脚本中用来发送email的方法,这个方法接收3个参数:email地址,标题和信件内容。因为这个程序要在各种控制环境下使用,所以一些类似发件人,转发email的主机等属性都定义为全局常量,而不是参数。

  清单1:通过SMTP发送邮件

1 FROM_ADDRESS = "dave@pragprog.com"
2 SMTP_HOST = "localhost"
3
4 def reply(to, subject, msg)
5 mail = "To: #{to}
" +
6 "From: #{FROM_ADDRESS}
" +
7 "Subject: #{subject}
" +
8 "
" +
9 msg
10
11 Net::SMTP.start(SMTP_HOST) do |smtp|
12 smtp.send_mail(mail, FROM_ADDRESS,
13 [ to, 'rurl_archive@zip.local.pragprog.com' ])
14 end
15 end

  一个email消息由两部分组成:信封(envelope)和内容(content)。信封告诉SMTP代理(sendmail或者postfix)如何投递消息。内容包括能被人们阅读的消息本身和一些标题(header)(比如消息subject),而一些内容中的header可能和envelope中的重复(比如“To”地址),这些重复的header用来显示时候使用,而envelope中的则是用来投递使用。(这也是为什么你会收到“To”地址不是你的垃圾邮件)

责编:豆豆技术应用

正在加载评论...