Perl: Lisez le courrier électronique et utilisez le contenu du message comme stdin pour une mise à jour excel

Je search de l'aide pour commencer un script Perl. Je suis relativement inexpérimenté avec Perl pour que l'aide soit appréciée 🙂

Fondamentalement, souhaitez démarrer un projet pour écrire un script qui aide à restr à jour avec les heures que j'ai travaillé. Fondamentalement, j'aimerais que le script soit envoyé par e-mail (automatisé en utilisant cron) en me callbackant d'envoyer mes heures chaque jour, puis j'envoie un e-mail avec le message comme "03/02/14 7.30 18.30" Le script lira ensuite datatables et mettra à jour une feuille de calcul excel, en gardant un journal des heures.

Je sais comment faire tout sauf que le script a lu un e-mail. J'ai fait des searchs sur MIME :: * MAIL :: * mais je ne suis pas tout à fait sûr de savoir quel package serait le meilleur et comment y parvenir.

Merci d'avance,

Ollie

Comme @mpapec vous a suggéré de lire les courriels via IMAP ou une boîte aux lettres locale dans une boîte linux.

Dans Windows, vous pouvez utiliser OLE et lire des e-mails dans une perspective: Perl: Win32 :: OLE et Microsoft Outlook – Immergeant efficacement les pièces jointes par courrier électronique

Vous pouvez lire les courriels en échange de cette manière: http://metacpan.org/pod/Email::Folder::Exchange

Si j'étais vous, j'utiliserais IMAP pour accéder aux courriels. Il est indépendant de la plate-forme et pas trop difficile à utiliser (je l'ai utilisé dans le passé et c'était fiable).

http://metacpan.org/pod/Net::IMAP::Client

my $imap = Net::IMAP::Client->new( server => 'mail.you.com', user => 'USERID', pass => 'PASSWORD'); # select folder $imap->select('INBOX'); #newest first my $messages = $imap->search({ FROM => 'you', SUBJECT => 'your email subjet', }, [ '^DATE' ]); # fetch full message (newest) my $data = $imap->get_rfc822_body($messages->[0]); #process store_data_in_excel($data); #move to archive $imap->copy([$messages->[0]], 'Archive'); $imap->add_flags(\@msg_ids, '\\Deleted'); $imap->expunge;