【发布时间】:2011-01-16 20:12:58
【问题描述】:
我们有一个用户的邮件帐户被垃圾邮件淹没。我怀疑他使用了大量的电子邮件帐户,因此可能会受到比他只有一个或两个地址更多的影响。
我想敲出一些代码来扫描他的邮箱并报告邮寄到的地址数量(理想情况下是那些发送到他邮箱的地址,例如,如果他是密件抄送的,而收件人:是 billg@microsoft .com,我想知道他收到的地址是哪个)。
我可以得到 To: 如果它存在于信封中,但如果没有,那么我需要使用 Cc: 之类的替代方法,并且可能实际上在消息标头中获取 regex-y 以标识为谁传递了此消息。我可以处理。我只是不确定如何拆分 Ruby msg 对象。
所以也许对我来说一个更好的问题是,“知道我有一个从 imap.fetch 返回的对象 msg,我如何检查各种可用的方法,例如 msg.to 和 msg.from?”
也许还有“我应该使用像 Ruby's Mail 这样的精美邮件库吗?”
到目前为止的代码 - 我真的是 Ruby 新手,好吗?
imap = Net::IMAP.new(server)
imap.login(user, pass)
imap.select(folder)
imap.search(['ALL']).each do |message_id|
msg = imap.fetch(message_id,'ENVELOPE')[0].attr['ENVELOPE']
if msg.to
puts "#{msg.to[0].mailbox}@#{msg.to[0].host}: \t#{msg.from[0].name}: \t#{msg.subject}"
else
# puts msg.inspect
msg = imap.fetch(message_id,'RFC822')[0].attr['RFC822']
puts msg.inspect
quit
end
# p msg.methods
end
【问题讨论】:
-
这似乎是一个很好的问题,也是查找电子邮件的一个很好的方向/方法——但是为什么需要扫描用户的电子邮件呢?找出所有用户的电子邮件地址将为您做什么?
-
(1) 这将帮助我确定他收到的垃圾邮件数量是否是由于他的组织在过去十年中将每个废弃的电子邮件地址都转发给了这个可怜的家伙。 (2) 它将为我提供一个有用的工具来分析一段时间内的工作量。我喜欢一个工具,它可以告诉我“在上个月(计费),谁给我发了电子邮件,我给谁发了电子邮件?”。为什么没有插件呢?最后,(3) 它将帮助我学习更多 Ruby。