Chodzi o sytuację, w której wysłany email uruchamia skrypt, który następnie wysyła przygotowaną wiadomość elektorniczną. ( CPanel - pipe to program )
Całą wiadomość mam wrzuconą do "stringa" mogę ją też podzielić na poszczególne linie, ale nie umiem znaleźć sposobu na jednoznaczne znalezienie.
Poniżej przykladowy email wysłany przy pomocy Outlook'a:
From kontakt@wizarts.pl Thu May 23 20:22:04 2013 Received: from public99535.xdsl.centertel.pl ([46.134.196.207]:27932 helo=wizart01) by s38.ehost.pl with esmtp (Exim 4.80) (envelope-from <kontakt@wizarts.pl>) id 1Ufa9M-00032p-3b for test@wizarts.pl; Thu, 23 May 2013 20:22:04 +0200 From: =?iso-8859-2?Q?Wizarts_-_systemy_zarz=B1dzania_tre=B6ci=B1=2C_strony_inte?= =?iso-8859-2?Q?rnetowe=2C_outsourcing_it?= <kontakt@wizarts.pl> To: <test@wizarts.pl> Subject: 1234 Message-ID: <004e01ce57e2$6b548650$41fd92f0$@wizarts.pl> MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_004F_01CE57F3.2EDD5650" X-Mailer: Microsoft Outlook 14.0 Thread-Index: Ac5X4mp7aGFQi2obRh6rO9r9Zi0HTA== Content-Language: pl
Założenie, że adres przyjdzie w pierwszej linii wydaje się niewłaściwe, a regex:
^From [A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$
nic nie wyciąga.
Będę wdzięczny za pomoc.
[edit: 24.05.2013 10:47]
Wymysliłem coś takiego:
1. Każdą linię wiadomości wrzucam do komórki w tablicy
2. Szukam pierwszej lini pasującej do regex:
$line_pattern = "/^(From |From: |From:)[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}(.*)$/"; $from = $matches[0]; } }
3.Ze znalezionej linii wyciągem adres email:
$pattern="/(?:[a-z0-9!#$%&'*+=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/"; $from = $emails[0];
Będę wdzięczny za uwagi.