e-Mails vom Server abrufen (POP3) und vorlesen per TTS

Danke für das Lob… ich freue mich, wenn mein Script Dir nützt.

„Pay it forward“ … Mir ist durch die vielen Scripte hier auch schon enorm weitergeholfen worden.

IPS rules :slight_smile:

Ich bin Rechtswissenschaft (Jura) studierender Webdesigner… habe von Elektrotechnik eigentlich gar keine Ahnung - aber die Möglichkeiten von IPS machen einfach Laune! Brauche nur noch einen Sponsor für die ganzen Komponenten, die ich gern im Haus hätte :wink:

Hallo,
habe das Skript unter IPS laufen lassen und die folgende Fehlermeldung ist gekommen:

Call to undefined function imap_open()

Nach der Suche im Forum habe stellte sich herraus, das mir die Datei php_imap.dll fehlte. Diese habe ich mir nun besorgt und in der php.ini die entsprechenden Einträge gemacht:


extension_dir = "C:\IPS\IP-SYMCON\"
extension = "php_imap.dll"

Jetzt kommt aber immer noch die obige Fehlermeldung.
Meine Vermutung ist, das php5ts.dll und php_imap.dll nicht zueinander passen. Eigenschaften mit rechter Maustaste auf php5ts.dll ergab 5.1.6.6 und bei php_imap.dll 5.2.1.1 Die php_imap.dll ist neurer als php5ts.dll Ist dies wohl das Problem??? Wenn ja, wo bekomme ich eine php_imap.dll für 5.1.6.6 her???

Grüße,
Jörg

Danke,
nachdem ich jetzt eine „alte“ php_imap.dll V5.1.6.6 habe, läuft es auch bei mir.

Grüße,
Jörg

Hallo zusammen,

ich teste gerade das Skript mit einem gmx Account aus. Generell funktioniert es schon, es gibt jedoch noch 2 Probleme:

  1. Die Ausgabe beginnt mit:
    Nachricht Nummer 1 von =?iso-8859-1?Q?Andreas_H=F6llein?= …

d.h. Umlaute funktionieren nicht und eine iso… Textfolge wird eingefügt

  1. Wie kann ich das Skript triggern, daß es nur bei Eingang neuer emails auf dem Server automatisch ausgeführt wird und nur die neuen emails vorliest?

Gibt es Lösungsmöglichkeiten?

Danke schonmal im Vorraus!

Andreas

Hallo IPSler,

ich habe dieses Skript erfolgreich in der V1 am laufen. Nun bin ich zur V2 umgestigen. Leider bekomme ich dieses Skript nicht zum Laufen. Ich habe die IMAP.DLL und meine PHP.INI rüberkopiert.
Meine Fehlermeldung:

Warning: imap_open() [function.imap-open]: Couldn’t open stream {pop.t-online.de:110/pop3}INBOX in C:\Programme\IP-SYMCON 2.0beta\IP-Symcon\scripts\16396.ips.php on line 64
nomail
Warning: imap_close(): supplied argument is not a valid imap resource in C:\Programme\IP-SYMCON 2.0beta\IP-Symcon\scripts\16396.ips.php on line 75

Vielleicht kann mir ein PHP-Profi einen Tipp geben. Das wäre echt super.:slight_smile:

Grüße
Christian

Kann mir wirklich keiner helfen?:frowning:

Die erste Fehlermeldung sagt lediglich, das keine Verbindung zum T-Online-Server aufgebaut wurde. Ich glaube nicht, das „INBOX“ auch für POP-Server richtig ist. Da die entsprechende Zeile aber auskommentiert ist, passt die Fehlermeldung nicht zum Script.
Die 2. Fehlermeldung ist ein Folgefehler, weil erste nicht geprüft wurde

Tommi

Hallo Tommi,

vielen Dank für deine Antwort. Ich habe das identische Skript in der V1 am laufen. Hatte es rüberkopiert und die Variablen geändert. Was hat sich in der V2 geändert???

:confused::confused::confused::confused:

Gruß
Christian

Das einzige, was mit IPS zu tun hat, ist die letzte Zeile. Ich denke nicht, das Paresy in V2 PHP-Befehle mit gleichen Namen (imap_xyz) eingebaut hat.
Irgendwas scheint entweder mit dem Account oder der imap.dll nicht zu stimmen.

Tommi

Es könnte damit zusammenhängen:

paresy

Hallo Paresy, was möchtest Du mir mit diesen Link sagen? Was hat opendir mit meinen Skript zu tun?

Wie gesagt: gleiches Skript, gleiche imap.dll, gleiche php.ini, gleicher Rechner

Grüße
Christian

Zugriffsrechte unter Umständen

Es bleibt auch immer noch die „Unschärfe“, dass die Fehlermeldung nicht so richtig zum geposteten Script passt.
Tommi

Versuche gerade das Googlemail-Skript zum Laufen zu bekommen. Leider funktioniert es aber nicht. Die Sprachausgabe beginnt aber die Variablen sind alle leer.
Ausserdem kommt folgende Fehlermeldung:

Warning: Invalid argument supplied for foreach() in [Test] on line 52

Muss das Skript vielleicht noch für die IPS V2 angepasst werden?

Hier mein aktuelles Skript.

<?php
// Abwandlung "Mails abrufen und vorlesen lassen" für IP-SYMCON
// von GreenT, mit OpenSSL/Curl und libgmailer
// Support: http://www.ipsymcon.de/forum/showthread.php?t=2979
// v.2007-03-08/10:09


/////// Benutzeroptionen /////////////////
$name = "anmeineemailadresse";         // Benutzername
$pwd = "Verrate ich nicht";                      // Kennwort
$tz = "0";                             // Zeitzone (Unterschied zur GMT)

/////// Sprachausgabe ///////////////////
$instance_id = 15666;                     // Instance ID der TTS-Instanz
$tell_mailcount = true;                // Anzahl neuer Nachrichten ansagen
$tell_quota     = true;                // Speichergröße ansagen
$tell_content   = true;                // Inhalt der Mails vorlesen


/////// Variablen ///////////////////////
$unread_set   = false;                 // Anzahl der ungelesenen Nachrichten
$imread_var   = "Mails.Unread";        // ...und in welche IPS-Variable?
$quota_set    = false;                 // zur Verfügung stehender Speicher
$quota_var    = "Mails.Quota";         // ...und in welche IPS-Variable?

function html2txt($document){  // Funktion zum Entfernen von HTML
$search = array('@<script[^>]*?>.*?</script>@si',  // javascript
               '@<[\/\!]*?[^<>]*?>@si',            // HTML tags
               '@<style[^>]*?>.*?</style>@siU',    // style tags
               '@<![\s\S]*?--[ 	
\r]*>@'        //  multi-line comments
);
$text = preg_replace($search, '', $document);
return $text;
}

require("libgmailer.php"); // Bibliothek muss in scripts/ liegen

   $gm = new GMailer();
   $gm->setLoginInfo($name, $pwd, $tz);


   if ($gm->connect()) {  // Verbinden
      $gm->fetchBox(GM_QUERY, "is:unread", 0); // nur ungelesene Mails
      $snapshot = $gm->getSnapshot(GM_STANDARD);
      if ($snapshot) {

        $mails_gesamt = $snapshot->box_total; // Anzahl der ungelesenen Nachrichten
        $quota        = $snapshot->quota_tot; // Restspeicher


         $m = 0;
         foreach ($snapshot->box as $i) {

            $no      = $m+1;

            $sender  = $snapshot->box[$m]['sender']."
";
            $sender  = html2txt($sender);
            $sender  = utf8_decode($sender);

            $date    = $snapshot->box[$m]['long_date']."
";
            $date    = html2txt($date);
            $date    = utf8_decode($date);

            $subject = $snapshot->box[$m]['subj']."
";
            $subject = html2txt($subject);
            $subject = utf8_decode($subject);

            $content = $snapshot->box[$m]['snippet']."
";
            $content = html2txt($content);
            $content = utf8_decode($content);

            $tell_content_tmp = "Nachricht Nummer ".$no." von ".$sender.". Betreff: ".$subject." vom ".$date.".";
            $tell_content_tmp .= "Inhalt: ".$content.".";

          $m++;
        }

        $say = "";

        if ($tell_mailcount == true){
            $say  .= " Sie haben ".$mails_gesamt." neue Nachrichten.";
        }

        if ($tell_quota     == true){
            $say .= " Ihnen stehen noch ".$quota." Megabytes Speicher zur Verfügung.";
        }

        if ($tell_content == true){
            $say .= " Nachrichten folgen. ";
            $say .= $tell_content_tmp;
        }

        if ($unread_set == true){
          SetValueInteger($unread_var, intval($mails_gesamt));
        }

        if ($quota_set == true){
          SetValueInteger($quota_var, intval($quota));
        }

        TTS_Speak ($instance_id,  $say, FALSE);

      }
       $gm->disconnect();
   }
?>

Hallo,

ich habe mit diesen E-Mail-Skript in 2.1b folgenden Fehler:

Notice:  Unknown: Can't login to this server (errflg=2) in Unknown on line 0

Kann mir jemand weiterhelfen?

Gruß
Christian