Email generieren

Hallo IPS Forum,

hab mal versucht die folgende email Funktion aus dem Forum auszuprobieren.

http://www.ip-symcon.de/forum/showthread.php?t=341

Nach Erstellung einer php.ini Datei sowie Kopie der imap_dll Datei in mein IP_Symcon Verzeichnis C:\programme\ip-symcon erfolgt bei Programmaufruf von IPS 2 x folgende Fehlermeldung:

Der Prozedureinsprungspunkt „_zval_dtor“ wurde in der DLL „php5ts.dll“ nicht gefunden.

IPS startet und läuft auch, aber der email script aus dem Forum läuft nicht.

Folgende Fehlermeldung erscheint im Ausgabefenster:
<br />
<b>Fatal error</b>: Call to undefined function imap_open() in <b>C:\Programme\IP-SYMCON\scripts.currentscript</b> on line <b>30</b><br />

Hat da jemand eine Idee ? Der Script müsste auch dahingehend modifiziert oder erweitert werden, da ich eine Mail erzeugen möchte.

Vielen Dank

MfG Meinolf

Script:
<?
/*


IP-SYMCON Event Scripting


*/
//File: POP3Check.ips.php
// Triggered Variables:
// Timer Settings: 600
// Links:
// http://de3.php.net/manual/de/ref.imap.php
// http://de3.php.net/manual/de/function.substr.php
// http://de3.php.net/manual/de/function.strpos.php
// http://de2.php.net/manual/de/function.substr.php

@error_reporting(7);

// Connect to Mailbox

$mailbox = imap_open ("{pop.gmx.net:110/pop3}INBOX", „pfname“, „pw“)
// erzeugt eine Meldung und bricht das Parsing / die Abarbeitung des Skriptes ab
or die(„Keine Verbindung bzw. Login ins Postfach“);

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

// 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));
}
// echo "Nachricht: ".$nachricht."xENDEx
";
// echo "Anzahl Nachrichten: „.$num_msg.“
";
// echo "Neue Nachrichten: „.$num_msg_new.“
";

if (($num_msg_new > 0) and ($betreff == „IPS“)){
$k_auf = strpos($nachricht,"[");
$k_zu = strpos($nachricht,"]");
//echo $k_auf;
//echo $k_zu;
$script = substr($nachricht, $k_auf + 1 , $k_zu - $k_auf - 1 );
echo "Skript: „.$script.“
";
IPS_RunScript($script);
//TTS_Speak(52151, „You have new mails“);
}

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

?>

Hallo Meinolf,

hast Du denn: php_imap.dll installiert? Schau einfach mal nach, ob die dll im Lib-Verzeichnis (bei mir heisst das ext) liegt.

Falls ja, musst Du ggf. noch php.ini anpassen. Fall dort
;extension=php_imap.dll
steht, einfach das Semikolon löschen

Ich wünsche einen schönen Abend.

Christoph.

Wenn wir schon dabei sind…
Ich dachte ich probiere es mal schnell aber ich habe auch kein Erfolg. php_Imap.dll ist an der richtigen Stelle. Die passende Version müsste es auch sein. PhP.ini stimmt auch.
Anbei ein Screenshot da man ja kein Copy/Paste machen kann.

Die erste Fehlermeldung ist die entscheidende, der Rest sind nur Folgefehler.
Die Verbindung zum Mailserver schlägt fehl, damit gibt es kein Connection-Handle, was die nachfolgenden Funktionen brauchen.
Ich wundere mich nur, das das Script weiter läuft, obwohl im Quelltext beim „imap_open“ ein "…or die(…) " drinsteht

$mailbox = imap_open ("{pop.gmx.net:110/pop3}INBOX", "pfname", "pw")
// erzeugt eine Meldung und bricht das Parsing / die Abarbeitung des Skriptes ab
or die("Keine Verbindung bzw. Login ins Postfach");

Tommi

Hallo Meinolf,

Der Prozedureinsprungspunkt „_zval_dtor“ wurde in der DLL „php5ts.dll“ nicht gefunden.

Dies deutet meistens auf eine falsche Version der DLL hin. Ich bekomme bei mir keinen Fehler. Meine DLL ist vom 23.08.2006 (Unter Eigenschaften steht die Version 5.1.6.6)

Grüße,
Jörg

So jetzt mach ich ernst… :smiley:

Da gibts was auf www.Tonis-Welt.com. Die Seite ist noch weit davon entfernt fertig oder nur umfangreich zu sein, aber ich denke man kann sie schon herzeigen.

Nähere Infos erstmal nur im Chat…

Toni

Hallo liebe Forumsmitglieder,

vielen Dank für eure Beiträge:) . Ich habe jetzt mal eine neuere Version der imap_dll (5.2.3.3) in das IPS Verzeichnis kopiert, dann erscheint aber eine andere Fehlermeldung: "Der Prozedureinsprungspunkt _safe_erealloc wurde in der DLL "php5ts.dll nicht gefunden. Man müsste mal wissen welche Version der imap_dll das System benötigt. Die php5ts.dll hat die Version 5.1.6.6.

Mfg Meinolf

Also Toni, dickes Lob für Deine Page. Weiter so.

Lustig sind die Menüs Mist und Quatsch…:smiley:

Gruß Thomas

Danke Thomas…

Momentan ist sie noch mehr Baustelle als Informationsquelle. Aber ich arbeite dran… Einige Infos sind ja auch schon drauf.

Die ToniTools sind quasi na Art Generalprobe. Der Downloadbereich ist noch non-public aber schon voll Funktionsfähig.

Toni

@Tommi
Ich habe das Script http://www.ipsymcon.de/forum/showthread.php?t=2979 von GreenT benutzt, da gibt es kein OR DIE (…). Ich weiß gar nicht wie ich hierher gekommen bin.
Welches ist den nun das richtige Script zum Email abrufen von Arcor?

Ah, ja, das hat mit dem geposteten Code wohl nur am Rande zu tun.
Das (von GreenT korrigierte) Script ist bestimmt auch für Arcor verwendbar. Den Mailserver für Arcor und Dein User/Password hast Du sicherlich schon eingetragen. Allerdings wird nicht geprüft, ob wirklich eine Verbindung zum Mailserver hergestellt wurde, sondern nach dem imap_open()einfach weiter gemacht, auch wenn keine Verbindung besteht. Das kann man abfangen, in dem man prüft, ob $mailbox überhaupt was enthält und am einfachsten beendet, wenn es fehl schlägt, z.B. mit


$mailbox=imap_open( //Parameter einsetzen
);
if (!$mailbox) {
echo "Keine Verbindung";
return;
}

//weiter im Script

Tommi