プログラムでメールを送信する方法はよく紹介されていますが、メールを受信して添付ファイルを保存する方法はあまり紹介されていません。
VB.netでもソケットを使って、自分でPOP3クライアントを作成したり、誰かが作ったライブラリを使ったりするしかありません。
VBAの場合はOutlookをコントロールして取得する方法がありますが、直接メールサーバーから取得したい場合は何か別のコンポーネントが必要になるでしょう。
VBScriptでやるなら、BASP21を使うのが一般的でしょう。
Rubyの場合はmailというgemをインストールすれば簡単にメールの受信ができるので、やってみました。
以下のコードです。
1 2 3 4 5 6 7 8 9 10 11 |
require 'mail' Mail.defaults { retriever_method(:pop3,address:"[POPサーバー]",port:110,user_name:'[ユーザー名]',password:'[パスワード]') } Mail.find(order: :desc).each do |m| m.parts.each do |p| File.open(p.filename , "w+b" , 0644) {|f| f.write p.decoded} if p.attachment? end break end |
最新のメール一つだけ読み込むようにしてあります。
受信したメールをサーバーから削除する場合、
findをfind_and_deleteに変更します。
こんな感じです。
Mail.find_and_delete(order: :desc,find_and_delete:tru).each do |m|