Ich benutze die neue Version 2.2 mit dem SMTP-Modul.
Hat bis heute auch immer geklappt.
Nur heute ( durch Zufall ) ist ein email Versand fehlgeschlagen.
Fehlermeldung : Already connected
Kam durch 2 gleichzeitige Ereignisse die eine email verschicken
wollten. Um dieses abzufangen hab ich mal schnell ein Script
dafuer geschrieben. Funktioniert auch wenn zur Zeit keine
Internetverbindung besteht. Wenn email-Versand fehlschlaegt
wird die email zwischengespeichert und alle x Minuten versucht
sie loszuwerden.
Vielleicht kanns jemand gebrauchen :
//******************************************************************************
// email puffern wenn Versand fehlschlaegt
// Timeraufruf alle x Minuten um gepufferte Mails zu senden oder mit script
// $root_id = Wo sollen die Mail gepuffert werden
// $smtp_id = SMTP Object-ID
//
// Benutzung email senden:
//
// require_once IPS_GetScriptID("smtpemail").".ips.php";
// email_send("subject","text");
//
//
// Benutzung email resend:
//
// require_once IPS_GetScriptID("smtpemail").".ips.php";
// email_resend();
//******************************************************************************
$root_id = 56334 /*[EMAIL]*/;
$smtp_id = 56594 /*[SYSTEM\E-Mail senden (SMTP)]*/;
if ( $IPS_SENDER == "TimerEvent" ) email_resend();
function email_send($subject,$text)
{
global $root_id;
global $smtp_id;
$status = SMTP_SendMail($smtp_id,$subject,$text);
if ( !$status ) email_puffern($subject,$text); // fehlgeschlagen
}
function email_puffern($subject,$text)
{
global $root_id;
$subject_id = IPS_CreateVariable(3);
IPS_SetName($subject_id,$subject);
IPS_SetParent($subject_id,$root_id);
SetValueString($subject_id,$text);
}
function email_resend()
{
global $root_id;
global $smtp_id;
$puffer = IPS_GetChildrenIDs($root_id);
if ( !$puffer ) return ;
$subject_id = $puffer[0];
$subject = IPS_GetName($subject_id);
$text = GetValueString($subject_id);
$status = SMTP_SendMail($smtp_id,$subject,$text);
if ( $status ) IPS_DeleteVariable($subject_id); // erfolgreich
}
Hallo
Ich halte das fuer nicht fuer Fehler von IPS.
Man will eine email losschicken und es geht nicht.
Kann immer wieder vorkommen.
Gleichzeitiges aufrufen oder kein Internet etc.
Dies ist nur eine Moeglichkeit dies abzufangen.
Dafuer ist ja der Rueckgabewert da.
Interne Loesung halt ich fuer keinen guten Plan.
Willst du alle nicht gesendeten emails intern zwischenspeichern ?
Ich halte das schon für angebracht, die emails zu buffern, wenn es Versandproblem gibt bzw. der SMTP-Server gerade nicht erreichbar ist.
Jeder Mail-Server, der an einen anderen versendet, macht das genauso.
Deshalb kommt es in seltenen Fällen vor, das email verzögert ausgeliefert werden, oder wenn der empfangende Server gerade down ist, die Verbindung immer wieder gecheckt wird …30 sek… 1 min … 2 min … 5 min bis hin zu Tagen.
Vom Prinzip müssten die mails dann ein eine Warteschlange gestellt und dann nach FIFO-Prinzip und Wichtigkeit ausgeliefert werden.
Ist das „Nein“ so zu verstehen, dass es nur einen Versuch gibt, die email zu zustellen?
Dir ging es hierbei nur zu vermeiden, dass Kollisionen entstehen?
ich versuche heute schon den ganzen Tag mein SMTP-mail zum Laufen zu bringen, bisher leider ohne Erfolg.
Es kommt immer beim Versenden der Testmail die Fehlermeldung Socket Error # 10060 Connection timed out. Als mailserver gebe ich ein „smtpmail.t-online.de“ ,Port „25“
Habe bereits die Windows-Firewall ausgeschaltet, einen anderen Router probiert alles vergebens.
ich habe es nun selbst herausgefunden: Manche Internetprovider (ISP) blocken die smtp server anderer Provider und somit schlägt das Senden von mails fehl.
Nun habe ich mir eine kostenlose mailadresse des Providers geholt worüber auch mein Internet-Anschluss läuft und schon funktioniert mein Mailversand.