Cytat(trzczy @ 14.12.2017, 05:18:53 )

Czekaj... jak masz tablicę stringów, to wewnątrz pętli foreach jest dostęp do każdego stringa jako stringa. Może powinieneś robić zapytanie w środku pętli, a nie czekając na jej koniec.
No jasne, wyniki print_r mnie zmyliły.
Poniżej zamieszczam działający skrypt, który wyciąga adresy e-mail z Undelivery i oznacza te adresy w bazie danych jako złe.
Adresy e-mail, które zostały po naszej wysyłce odrzucone - Undelivery są ukryte w body wiadomości.
Jest tam na raz kilka postaci adresów, w tym nasz. Przykład:
[0] => bok@anonse.eu
[1] => jan.piotrow.zurm@wp.pl
[2] => rfc822;jan.piotrow.zurm@wp.pl
[3] => "jan.piotrow.zurm@wp.pl":
Z przejrzenia iluś tam setek wyników wychodzi, że adres o który nam chodzi można identyfikować po "rfc822;" i tak też filtruje ten skrypt.
Być może na innym serwerze jest inaczej, stąd zostawione print_r i echo do testów.
Powyższy "czysty" przykład jest z parsowania body z parametrem "2", dla "1.2" było dużo gorzej.
Wskazany jest podfolder Drafts, bo tam zostały zrzucone do testów wiadomości Undelivery.
Dzięki za pomoc wszystkim z tego tematu
// Skryt do wyciągania adresów e-mail z body zwrotek Undelivery i oznaczania tych adresów w bazie danych jako zły adres.
require 'cat_name.php'; //tam jest połączenie z bazą danych
//Połaczenie z kontem email
$imap = imap_open
("{domena.eu:143}INBOX.Drafts", "bok@domena.eu", "passwd") OR
die ("can't connect: " . imap_last_error
());
/* Odchaszowanie tego wyświetli strukturę INBOX z czego będziemy wiedzieli do jakiego podfolderu chcemy wejść w $imap bo czasami Kosz to naprawdę jest Trash
echo "<h1>Mailboxes</h1>\n";
$folders = imap_listmailbox($imap, "{user@domena.eu:143}", "INBOX");
*/
//Wyciągnięcie body maili
$emails = imap_search($imap,'ALL'); //zamaiast ALL można ustawić nieprzeczytane itp. zob. manual imap
if($emails) {
foreach($emails as $email_number) {
$message = imap_fetchbody($imap,$email_number,2); //zamiast "2" można testować "1.2", u mnie "2" działa najlepiej
$pattern='/\S+@\S+\.\S{1,6}/';
echo 'print_r($matchArray'; // dotestów print_r($matchArray[0
]); // dotestów
foreach ($matchArray[0] as $value){
if(strstr($value, "rfc822;")!==False){ echo "echo Svalue = $value\n"; // dotestów
$qry = mysql_query("UPDATE `tabela` SET `zly_email` = 1 WHERE `email` LIKE '$value'"); }
}
}
}
/* zamykamy połączenie */
//imap_delete($imap,'1:*'); // !!!!!!!!!!! Uwaga, czyścimy całą zawartość skrzynki, tu Drafts, bo tam były same Undelivery
imap_errors();
imap_alerts();
imap_close($imap, CL_EXPUNGE);