Mail parser přes IMAP a uložení subject a body do DB – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Mail parser přes IMAP a uložení subject a body do DB – Python – Fórum – Programujte.comMail parser přes IMAP a uložení subject a body do DB – Python – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Honza
~ Anonymní uživatel
450 příspěvků
5. 8. 2011   #1
-
0
-

Zdravím, poradil by mi někdo s parserem emailu pomocí imaplib?

Jde o to, že potřebuji najít email který obsahuje v subject například "MSG_ID: {toto číslo potřebuji}

Z této zprávy pak zjistit subject a celé body a uložit do DB (MySQL). Zatím jsem se moc daleko nedostal. Našel jsem něco takového: Uvítám každou radu.

import imaplib, email
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('***','***')
mail.list()

mail.select("inbox") 

result, data = mail.search(None, "ALL")

ids = data[0] 
id_list = ids.split() 
latest_email_id = id_list[-1] 
print id_list

result, data = mail.uid('search', None, '(HEADER Subject "Hledany predmet")')

latest_email_uid = data[0].split()[-1]
result, data = mail.uid('fetch', latest_email_uid, '(RFC822)')
raw_email = data[0]
 
email_message = email.message_from_string(raw_email)

print email_message['To']

print email.utils.parseaddr(email_message['From']) 

print email_message.items()
Nahlásit jako SPAM
IP: 90.178.222.–
Řešení
LouisD
~ Anonymní uživatel
9 příspěvků
5. 8. 2011   #2
-
0
-
Vyřešeno Nejlepší odpověď

   

$IMAPStream = imap_open( 'server', 'username', 'password' ); // server v mém případě na localhost vypadá takto: {localhost:143/imap/notls}		
if ( $IMAPStream )
{
	$IMAPNumMessages = imap_num_msg( $IMAPStream );
	if ( $IMAPNumMessages )
	{
		for ( $i = 1; $i <= $IMAPNumMessages; ++$i )
		{
			$TMP = imap_header( $IMAPStream, $i );
			if ( $TMP -> Deleted != 'D' )
			{			
				if ( in_array( $TMP -> from[ 0 ] -> mailbox . '@' . $TMP -> from[ 0 ] -> host, $AllowEmails ) )
				{
					$Data[ 'header' ] = imap_fetchheader( $IMAPStream, $i ); // hlavička
					$Data[ 'body' ] = iconv( 'Windows-1250', 'UTF-8', quoted_printable_decode( imap_body( $IMAPStream, $i ) ) ); // tělo
					$Data[ 'email' ] = $TMP -> from[ 0 ] -> mailbox . '@' . $TMP -> from[ 0 ] -> host; // adresa
					if ( /* uložení do db */ )
					{
						imap_delete( $IMAPStream, $i ); // odstranění emailu (označí jako smazané)
					}					
					else
					{
						// chyba
					}
				}						
			}
		}
	}
}

Nahlásit jako SPAM
IP: 88.102.27.–
LouisD
~ Anonymní uživatel
9 příspěvků
5. 8. 2011   #3
-
0
-

Tak se omlouvám, nějak jsem přehlédl Python, každopádně třeba to trochu pomůže...

Nahlásit jako SPAM
IP: 88.102.27.–
Honza
~ Anonymní uživatel
450 příspěvků
6. 8. 2011   #4
-
0
-

#3 LouisD
Díky, jojo, v PHP není problém, v Ptyhonu plavu :/

Nahlásit jako SPAM
IP: 90.182.160.–
Kart
~ Anonymní uživatel
1 příspěvek
15. 1. 2014   #5
-
0
-

A co je $AllowEmails ? A kde je definovany?

Nahlásit jako SPAM
IP: 217.115.247.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Zalomení řádku v sms přes mail() — založil Štěpán Andrle

IMAP a gmail — založil Anonymní uživatel

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý