servus zusammen,
ich wende mich an euch, weil ich vor einem problem stehe und vllt. jemand von euch weiter weiß. ich will folgendes realisieren: ein php-script, das ein imap/pop3 postfach liest (per cronjob) und diese emails an verschiedene adressen weiterleitet, die auf basis einer mysql-datenbank ermittelt werden. einfach dargestellt sieht die user-tabelle wie folgt aus:
id | nickname | email
1 | max | max@max.de
2 | bernd | bernd@bernd.de
usw.
so. nun checke ich per php (siehe code unten) das postfach (catchall) und lese die emails ein. dann wird in der datenbank nachgesehen, ob es einen user gibt, dessen nickname mit dem empfänger der email übereinstimmt und an die email-adresse dieses users soll dann die email 1:1 weitergeleitet werden. ich habe mein script schon soweit, dass er das ganze so durchführt, allerdings scheitere ich an der 1:1 weiterleitung. es fehlen also anhänge und die emails sind meistens ein durcheinander an wilden html-tags (bei newslettern bspw.) usw.
weiß jemand, wie es möglich ist, die email einfach 1:1 wie sie ist per php-mail weiterzuschicken? wäre super! danke für alle tipps!
ps: mein bisheriger code
Alles anzeigen
ich wende mich an euch, weil ich vor einem problem stehe und vllt. jemand von euch weiter weiß. ich will folgendes realisieren: ein php-script, das ein imap/pop3 postfach liest (per cronjob) und diese emails an verschiedene adressen weiterleitet, die auf basis einer mysql-datenbank ermittelt werden. einfach dargestellt sieht die user-tabelle wie folgt aus:
id | nickname | email
1 | max | max@max.de
2 | bernd | bernd@bernd.de
usw.
so. nun checke ich per php (siehe code unten) das postfach (catchall) und lese die emails ein. dann wird in der datenbank nachgesehen, ob es einen user gibt, dessen nickname mit dem empfänger der email übereinstimmt und an die email-adresse dieses users soll dann die email 1:1 weitergeleitet werden. ich habe mein script schon soweit, dass er das ganze so durchführt, allerdings scheitere ich an der 1:1 weiterleitung. es fehlen also anhänge und die emails sind meistens ein durcheinander an wilden html-tags (bei newslettern bspw.) usw.
weiß jemand, wie es möglich ist, die email einfach 1:1 wie sie ist per php-mail weiterzuschicken? wäre super! danke für alle tipps!

ps: mein bisheriger code
Quellcode
- <?php
- $mail = imap_open('{localhost:110/pop3}INBOX','catchall@test.de','passwort') OR die('-');
- $messageCount = imap_num_msg($mail);
- echo $messageCount.' emails gefunden';
- echo '<hr>';
- for($i=1;$i<=$messageCount;$i++) {
- $number = $i;
- $messageBody = imap_body($mail,$number);
- $messageHeader = imap_header($mail,$number);
- $messageStructure = imap_fetchstructure($mail,$number);
- $messageEncoding = intval($messageStructure->encoding);
- $headerMessageId = $messageHeader->message_id;
- $headerSubject = $messageHeader->subject;
- $headerDate = $messageHeader->date;
- if($messageEncoding == 0){
- //$messageBody = imap_7bit($messageBody);
- $messageBody = $messageBody;
- } elseif($messageEncoding == 1) {
- $messageBody = imap_8bit($messageBody);
- } elseif($messageEncoding == 2) {
- $messageBody = imap_binary($messageBody);
- } elseif($messageEncoding == 3) {
- $messageBody = imap_base64($messageBody);
- } elseif($messageEncoding == 4) {
- $messageBody = quoted_printable_decode($messageBody);
- } elseif($messageEncoding == 5) {
- $messageBody = $messageBody;
- }
- $headerSubjectTemp = imap_mime_header_decode($headerSubject);
- $headerSubject = utf8_decode($headerSubjectTemp[0]->text);
- $toPersonal = $messageHeader->to[0]->personal;
- $toAddress = $messageHeader->to[0]->mailbox.'@'.$messageHeader->to[0]->host;
- $fromPersonal = $messageHeader->from[0]->personal;
- $fromAddress = $messageHeader->from[0]->mailbox.'@'.$messageHeader->from[0]->host;
- $date = $messageHeader->udate;
- $sqlCheck = "SELECT email FROM users WHERE nickname = '".addslashes($messageHeader->to[0]->mailbox)."' LIMIT 1";
- $resCheck = mysql_query($sqlCheck);
- if(mysql_num_rows($resCheck) == 1) {
- $rowCheck = mysql_fetch_assoc($resCheck);
- $headers = "MIME-Version: 1.0\n";
- $headers .= "Content-type: text/html; charset=utf-8\n";
- $headers .= "From: ".$fromPersonal." <".$fromAddress.">\n";
- $headers .= "Date: ".date('r',$date)."\n";
- mail(stripslashes($rowCheck['email']),$headerSubject,$messageBody,$headers);
- }
- echo '<hr>';
- echo 'to: '.$toAddress.'<br>';
- echo 'from: '.$fromAddress.'<br>';
- echo 'subject: '.$headerSubject.'<br>';
- echo 'date: '.$date.' '.date('d.m.Y, H:i:s',$date).' Uhr<br>';
- echo 'body: '.$messageBody.'<br>';
- echo '<hr>';
- imap_delete($mail,$number);
- }
- imap_expunge($mail);
- imap_close($mail);
- ?>