メール アカウントにスパムが殺到しているユーザーがいます。彼は多数の電子メール アカウントを持っているため、1 つまたは 2 つのアドレスしか持たない場合よりも多くの影響を受けるのではないかと私は疑っています。
彼のメールボックスをスキャンして、メールが送信されたアドレスの数をレポートするコードを作成したいと思います (理想的には、彼のメールボックスに配信されたアドレスです。どのアドレスが彼に届いたのか知りたいです。)
エンベロープに存在する場合は To: を取得できますが、存在しない場合は Cc: などの代替手段にフォールバックする必要があり、おそらく実際にはメッセージヘッダーで regex-y を取得して、このメッセージが誰に配信されたかを識別します。私はそれを扱うことができます。Ruby msg オブジェクトを分解する方法がわかりません。
「imap.fetch から返されたオブジェクト msg があることを知っているので、msg.to や msg.from などの利用可能なさまざまなメソッドを調べるにはどうすればよいでしょうか?」
また、おそらく「Ruby のメールのような派手なメール ライブラリを使用する必要がありますか?」
ここまでのコード - 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