2010-05-05 6 views
5

Je suis à la recherche d'une approche simple (OO?) Pour la création et l'envoi d'emails.Quelle est une bonne interface Perl OO pour créer et envoyer des emails?

Quelque chose comme

$e = Email->new(to => "test <[email protected]>", from => "from <[email protected]>"); 
$e->plain_text($plain_version); 
$e->html($html_version); 
$e->attach_file($some_file_object); 

J'ai trouvé Email :: MIME :: CreateHTML, qui ressemble beaucoup dans presque tous les sens, sauf qu'il ne semble pas soutenir les pièces jointes.

En outre, je considère écrire ces email à une base de données et avoir un cronjob les enverra à une date ultérieure. Cela signifie que j'aurais besoin d'un $e->as_text() sous pour renvoyer l'intégralité de l'e-mail, y compris les pièces jointes, sous forme de texte brut que je pourrais insérer dans la base de données. Et donc je devrais alors avoir un moyen d'envoyer les courriels bruts - ce qui serait un bon moyen d'y parvenir?

Un grand merci

Répondre

4

Vous devez lire la documentation plus attentivement, puis deux de vos trois questions seraient sans objet.

Du synopsis de Email::MIME::CreateHTML:

my $email = Email::MIME->create_html(

Vous obtenez évidemment un objet Email::MIME. Voir les méthodes parts_set et parts_set pour ce que l'on appelle les pièces jointes.

Email::MIME est une sous-classe de Email::Simple. Voir la méthode as_string pour sérialiser l'objet en texte.

Voir Email::Sender pour l'envoi de courrier.

2

Vous pouvez vérifier sur perl MIME::Lite.

Vous pouvez obtenir le message comme une chaîne à enregistrer dans une base de données:

### Get entire message as a string: 
$str = $msg->as_string; 
+0

Je pense que cela pourrait être parfait! Je savais qu'il y en aurait un quelque part! Merci. – aidan

+0

Il n'est pas nécessaire d'introduire une bibliothèque de messagerie MIME complètement différente. – daxim

1

Email::Stuff est un joli wrapper pour Email :: MIME. Vous n'avez pas besoin de vous soucier de la structure MIME du courrier, le module le fait pour vous.

Email::Stuff->from  ('[email protected]'      ) 
      ->to  ('[email protected]'    ) 
      ->bcc  ('[email protected]'    ) 
      ->text_body($body        ) 
      ->attach (io('dead_bunbun_faked.gif')->all, 
         filename => 'dead_bunbun_proof.gif') 
      ->send; 

Il a également as_string.

+0

Merci pour ça. Email :: Stuff semble idéal – aidan

Questions connexes