我们有一个用户的邮件帐户被垃圾邮件淹没。我怀疑他拥有大量的电子邮件帐户,因此他可能只使用一两个地址。
我想敲出一些代码来扫描他的邮箱并报告邮寄到的地址数量(理想情况下是那些发送到他邮箱的地址,例如,如果他是密件抄送并且收件人:是 billg@microsoft.com,我想知道他收到的是哪个地址)。
我可以得到 To: 如果它存在于信封中,但如果没有,那么我需要使用 Cc: 之类的替代方法,并且可能实际上在消息标头中获取 regex-y 到传递此消息的 ID。我可以处理。我只是不确定如何拆分 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