{"id":219,"date":"2007-07-07T18:02:51","date_gmt":"2007-07-07T16:02:51","guid":{"rendered":"https:\/\/bob-team.de\/wordpress\/?p=219"},"modified":"2021-05-22T21:32:32","modified_gmt":"2021-05-22T19:32:32","slug":"perl-und-imap","status":"publish","type":"post","link":"https:\/\/bob-team.de\/wordpress\/2007\/07\/07\/perl-und-imap\/","title":{"rendered":"Perl und IMAP"},"content":{"rendered":"<p>Das Modul <a href=\"http:\/\/search.cpan.org\/~conteb\/IMAP-Client-0.13\/lib\/IMAP\/Client.pm\"><em>Mail::IMAPClient<\/em><\/a> ermoeglicht der Programmiersprache Perl den komfortablen Zugriff auf einen IMAP-Server.<\/p>\n<p><!--more--><\/p>\n<p>Beispiel 1:<\/p>\n<pre lang=\"perl\">\r\nuse strict;\r\nuse warnings;\r\nuse Mail::IMAPClient;\r\n\r\n$imap = Mail::IMAPClient->new( Server  => 'mail.server.com:143',\r\n                              User    => 'me',\r\n                              Password  => 'mypass')\r\n        # module uses eval, so we use $@ instead of $!\r\n        or die \"IMAP Failure: $@\";\r\n\r\nforeach my $box qw( HAM SPAM ) {\r\n   # which file are the messages going into\r\n   my $file = \"mail\/$box\";\r\n\r\n   # select the mailbox to get messages from\r\n   $imap->select($box)\r\n        or die \"IMAP Select Error: $!\";\r\n\r\n   # store each message as an array element\r\n   my @msgs = $imap->search('ALL')\r\n        or die \"Couldn't get all messagesn\";\r\n\r\n   # loop over the messages and store in file\r\n   foreach my $msg (@msgs) {\r\n     # pipe msgs through 'formail' so they are stored properly\r\n     open my $pipe, \"| formail >> $file\"\r\n       or die(\"Formail Open Pipe Error: $!\");\r\n\r\n     # send msg through file pipe\r\n     $imap->message_to_file($pipe, $msg);\r\n\r\n     # close the messgae pipe\r\n     close $pipe\r\n       or die(\"Formail Close Pipe Error: $!\");\r\n   }\r\n\r\n   # close the folder\r\n   $imap->close($box);\r\n}\r\n\r\n$imap->logout();[\/code]\r\n\r\nBeispiel 2:\r\n\r\n[code lang=\"perl\"]use strict;\r\nuse warnings;\r\nuse Mail::IMAPClient;\r\n\r\n$imap = Mail::IMAPClient->new( Server  => 'mail.server.com:143',\r\n                              User    => 'me',\r\n                              Password  => 'mypass')\r\n        # module uses eval, so we use $@ instead of $!\r\n        or die \"IMAP Failure: $@\";\r\n\r\nforeach my $box qw( HAM SPAM ) {\r\n   # how many msgs are we going to process\r\n   print \"There are \". $imap->message_count($box).\r\n          \" messages in the $box folder.n\";\r\n\r\n   # which file are the messages going into\r\n   my $file = \"mail\/$box\";\r\n\r\n   # select the mailbox to get messages from\r\n   $imap->select($box)\r\n        or die \"IMAP Select Error: $!\";\r\n\r\n   # store each message as an array element\r\n   my @msgs = $imap->search('ALL')\r\n        or die \"Couldn't get all messagesn\";\r\n\r\n   # loop over the messages and store in file\r\n   foreach my $msg (@msgs) {\r\n     # pipe msgs through 'formail' so they are stored properly\r\n     open my $pipe, \"| formail >> $file\"\r\n       or die(\"Formail Open Pipe Error: $!\");\r\n\r\n     # skip the msg if its over 100k\r\n     if ($imap->size($msg) > 100000) {\r\n       $imap->delete_message($msg);\r\n       next;\r\n     }\r\n\r\n     # send msg through file pipe\r\n     $imap->message_to_file($pipe, $msg);\r\n\r\n     # close the messgae pipe\r\n     close $pipe\r\n       or die(\"Formail Close Pipe Error: $!\");\r\n\r\n     # delete each message after downloading\r\n     $imap->delete_message($msg);\r\n\r\n     # If we are just testing and want to leave\r\n     #  leave the messages untouched, then we\r\n     #  can use the following line of code\r\n     # $imap->deny_seeing($msg);\r\n   }\r\n\r\n   # expunge and close the folder\r\n   $imap->expunge($box);\r\n   $imap->close($box);\r\n}\r\n\r\n$imap->logout();\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Das Modul Mail::IMAPClient ermoeglicht der Programmiersprache Perl den komfortablen Zugriff auf einen IMAP-Server.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-219","post","type-post","status-publish","format-standard","hentry","category-skripte","entry"],"_links":{"self":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/219","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/comments?post=219"}],"version-history":[{"count":1,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/219\/revisions"}],"predecessor-version":[{"id":2652,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/219\/revisions\/2652"}],"wp:attachment":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/media?parent=219"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/categories?post=219"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/tags?post=219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}