PBX Mails auslesen und als Stringvariable darstellen

Ich brauch als Programmierwappler mal eure Hilfe. Ich habe eine Askozia PBX die Mails verschickt wenn ich einen verpassten Anruf hatte. Die Mailbox die ich dafür eingerichtet habe kann ich ja ganz schön in IPS darstellen, siehe Screenshot. Ich kann natürlich auch dann die Mails lesen und den Inhalt lesen. Ich will das aber schöner darstellen im Webfront, am Liebsten wäre es mir ich kann die Mails gleich auswerten und den Inhalt in einer Stringvariablen darstellen wenn es verpasste Anrufe gab. Wenn ich diese zur Kenntnis genommen habe, dann will ich auf Knopfdruck die Variable wieder leeren (das würde ich alleine schaffen :D). Aber wie werte ich die Mails aus? Kann mir mal jemand nen Denkanstoss geben, ich habe schon gesucht, aber nix passendes gefunden das mir weiterhelfen könnte bzw. vielleich nach dem falschen gesucht. Denke es kann vielleicht auch dem einen oder anderen weiterhelfen der vielleicht zukünftig Askozia verwenden möchte, sollte ich hier was zusammenbringen :slight_smile:

Das geht mit Bordmitteln :wink: POP3-GetMailEx, dann hast du den Inhalt im Array und kannst auswerten.

Oder mit PHP Funktionalität, z.B. (etwas reduziert, eventuell zuviel ;))


<?
// Connect to Mailbox
// hier Script mit den Benutzerdaten des Servers konfigurieren
$hostname = "imap.1und1.de";
$username = "...";
$kennwort = "...";

$mailbox = imap_open("{".$hostname."}", $username, $kennwort)
	// $mailbox = imap_open ("{".$hostname.":110/pop3}INBOX", $username, $kennwort) // für GMX und andere bekannte Freemailer
	// erzeugt eine Meldung und bricht das Parsing / die Abarbeitung des Skriptes ab
	or die("Keine Verbindung bzw. Login ins Postfach: " . imap_last_error());

// Mail holen
$check = imap_check($mailbox);
$num_msg = $check->Nmsgs;
$num_msg_new = $check->Recent;

if ($IPS_SENDER == "Execute") {
	echo "Anzahl Nachrichten: ".$num_msg."
";
	echo "Neue Nachrichten: ".$num_msg_new."
";
}

// Mail auslesen
$nMessages = imap_num_msg($mailbox);
for($i = 1; $i <= $nMessages; $i++){
	$header = imap_header($mailbox, $i);
	$datum = $header->Date;
	$m_id = $header->message_id;
	$empfaenger = $header->toaddress;
	$betreff = $header->subject;
	$absender = $header->from[0]->personal;
	$absender_email = $header->from[0]->mailbox."@".$header->from[0]->host;
	$body = imap_body($mailbox,$i);
	$text_koerper = $body;
	$fheader = imap_fetchheader($mailbox,$i);
	$nachricht = quoted_printable_decode(imap_fetchbody($mailbox, $i, 1));

	if ($IPS_SENDER == "Execute") {
		echo "# Betreff: -->".$betreff."<--

";
		echo "# Nachricht: 
".$nachricht."----------

";
	}

	if ($num_msg > 0) {
		if ($betreff == "IPS Meldung") {
		   LogMyMessage("MAIL von ".$absender."
----------------------------------------------------------------------
".$nachricht."
----------------------------------------------------------------------");
		}
		if (substr_count($betreff, 'Backup-Set storage-backup')) {
			if (substr_count($nachricht, 'Status: Success')) {
			   SetValueBoolean(15153 /*[Kommunikation\MailCheck for homeinfo\Backup-daten Status]*/, true);
			   LogMyBackup("backup daten+bilder: ok");
			} else {
			   SetValueBoolean(15153 /*[Kommunikation\MailCheck for homeinfo\Backup-daten Status]*/, false);
			   LogMyBackup("
"."----------------------------------------"."
".$nachricht."----------------------------------------");
			}
		}
		if (substr_count($betreff, 'Backup-Set storage-music')) {
			if (substr_count($nachricht, 'Status: Success')) {
			   SetValueBoolean(21118 /*[Kommunikation\MailCheck for homeinfo\Backup-music Status]*/, true);
			   LogMyBackup("backup music: ok");
			} else {
			   SetValueBoolean(21118 /*[Kommunikation\MailCheck for homeinfo\Backup-music Status]*/, false);
			   LogMyBackup("
"."----------------------------------------"."
".$nachricht."----------------------------------------");
			}
		}
	}
	imap_delete($mailbox, 1);
	imap_expunge($mailbox);

}
// Mailbox schließen
imap_close($mailbox);

$var = IPS_GetVariable(15153 /*[Kommunikation\MailCheck for homeinfo\Backup-daten Status]*/);
if (time() >= $var['VariableUpdated'] + 93600) {
   SetValueBoolean(15153 /*[Kommunikation\MailCheck for homeinfo\Backup-daten Status]*/, false);
   LogMyBackup("Kein Backup Daten innerhalb von 26 Stunden!");
}
$var = IPS_GetVariable(21118 /*[Kommunikation\MailCheck for homeinfo\Backup-music Status]*/);
if (time() >= $var['VariableUpdated'] + 612000) {
   SetValueBoolean(21118 /*[Kommunikation\MailCheck for homeinfo\Backup-music Status]*/, false);
   LogMyBackup("Kein Backup Music innerhalb 1 Woche!");
}

?>

Okay, dann versuch ich das mal mit den Boardmitteln und setzte mich mal mit Arrays auseinander! Danke für den Einstieg ralf, ich komm sicher nochmal was fragen :wink:

Um mir vielleicht beim Weiterdenken zu helfen…

Ich bekomme mit IMAP_GetCachedMails mal alle Mails raus die auf dem Mailkonto liegen, als mehrdimensionales Array. Jetzt muss ich mir aus diesem die UID’s der einzelnen Mails auslesen um dann auf eben diese zugreifen zu können. Ist dieser Ansatz schon mal richtig?

Ich habe dann die UID’s (sprich Mails) wiederrum in einem Array, mit Hilfe dessen ich dann mit IMAP_GetMailEx die einzelnen Mails (den text) auswerte und in eine Variable schreibe.

Ist dieser Ansatz richtig? Ich versuche mich grade in Arrays einzulesen und möchte nicht von Beginn weg schon am Holzweg sein :wink: