2016-04-27 2 views
0

Dans mon projet, je vais devoir écrire différents emplois cron pour lire les emails de différentes adresses email pour faire différentes tâches. J'utilise mail gem mais le problème est, retriever_method est singleton. Donc, quand je mentionnerai la nouvelle adresse e-mail et le nouveau mot de passe, les paramètres précédents de retriever_method seront modifiés. Donc, je ne suis pas en mesure de récupérer les e-mails lorsque les tâches cron sont en cours d'exécution en même temps.Comment récupérer des e-mails à partir de plusieurs adresses email en utilisant pop3 de gem mail dans Rails?

On suppose que, dans mon premier emploi cron j'ai quelque chose comme les paramètres suivants

Mail.defaults do 
    retriever_method :pop3, :address => "pop.gmail.com", 
         :port  => 995, 
         :user_name => '<username1>', 
         :password => '<password1>', 
         :enable_ssl => true 
end 

Dans mon deuxième emploi cron, Si j'utilise quelque chose comme

:user_name => '<username2>', 
:password => '<password1>' 

les deux seront dans ce cas changé en nom d'utilisateur2

est-il une solution de contournement. Ou toute autre suggestion pour faire ce travail. Je ne veux pas IMAP pour une autre raison.

Toute suggestion sera appréciée.

+0

J'ai rencontré le même problème, s'il vous plaît partager une solution si vous pouvez en trouver un! – atefth

+2

Si vous utilisez Gmail, la [gem Ruby Gmail] (https://github.com/gmailgem/gmail) est en fait assez agréable à utiliser. Si vous êtes bloqué avec Mail, utilisez au moins IMAP, ce protocole est beaucoup plus efficace. – tadman

+1

@tadman, Merci pour votre réponse. Malheureusement, je n'utilise pas Gmail. Peut-être dans mon cas, je vais devoir utiliser Net :: POP3 ou Net :: IMAP, avec le Mail. Principalement Mail seulement soutenir la méthode de récupération de singleton. Le courrier ne servira pas mon but. –

Répondre

0

Mail retrieve_method est singleton. donc j'utilise Net :: IMAP directement avec le Mail pour récupérer la pièce jointe. On peut aussi utiliser Net :: Pop3 avec Mail pour résoudre ce problème.