gpt4 book ai didi

ruby - 如何在 Ruby 中通过 IMAP 获取电子邮件的收件人地址

转载 作者:数据小太阳 更新时间:2023-10-29 08:41:53 25 4
gpt4 key购买 nike

我们有一个用户的邮件帐户被垃圾邮件淹没。我怀疑他使用了大量的电子邮件帐户,因此比他只有一个或两个地址时可能受到的影响更多。

我想敲一些代码来扫描他的邮箱并报告邮寄地址的数量(最好是投递到他邮箱的地址,例如如果他是密件抄送并且收件人:是 billg@microsoft .com,我想知道哪个地址到达了他)。

我可以获得 To: 如果它出现在信封中,但如果没有,那么我需要求助于替代方案,例如 Cc: 并且可能实际上在邮件 header 中获取 regex-y 以标识此邮件的发送对象。我能应付。我只是不确定如何拆分 Ruby 消息对象。

所以对我来说,也许更好的问题是,“知道我有一个从 imap.fetch 返回的对象 msg,我如何检查可用的各种方法,例如 msg.to 和 msg.from?”

也许还有“我应该使用像 Ruby 的 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 个元素。

imap.search(["ALL"]).each do |msg|
envelope = imap.fetch(msg, "ENVELOPE")[0].attr["ENVELOPE"]
sender = envelope.from[0].mailbox # This will give you the mailbox name without @domain.com
recipient = envelope.to[0].mailbox # You can also do envelope.to.each { operations } to get the full list of recipients
end

信封包含您要查看的所有数据。

envelope.from[0].mailbox 是没有@domain.com 的发件人

envelope.to[0] 是没有@domain.com 的第一个收件人

envelope.subject 为主题

等等等等

关于ruby - 如何在 Ruby 中通过 IMAP 获取电子邮件的收件人地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2263602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com