Zurück   IP-Symcon Community Forum > IP-Symcon 1.0 > Archiv > Anleitungen / Nützliche PHP Scripte

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
  #1 (permalink)  
Alt 07.03.07, 11:56
Junior Member
 
Registriert seit: Jan 2007
Beiträge: 15
Standard e-Mails vom Server abrufen (POP3/GMail) und vorlesen per TTS

GMail-Version weiter unten im Thread

Liebe Leidensgenossen,

ein solches Script war vor einiger Zeit mal hier im Forum erfragt worden - ich habe mir eines zusammengebastelt und möchte es euch nicht vorenthalten.

Zur Nutzug wird das IMAP-Modul (DLL) für PHP benötigt, eine Anleitung zur Installation gibt es im Forum.

Änderung: Fehler in alter Zeile 83 ($nachricht_tell mit Inhalt versehen) behoben; Fix von H-MAN für bestimmte Mailserver hinzugefügt; $prefix mit Startwert versehen

PHP-Code:
<?
/*
******************************************************
e-Mails vom Server abrufen (POP3) und vorlesen per TTS
******************************************************
File     : emailtts.ips.php
Trigger  : none
*/



// Funktionen zum Auslesen eines bestimmten MIME-Types

function get_mime_type(&$structure)
{
    
$primary_mime_type = array("TEXT""MULTIPART""MESSAGE""APPLICATION""AUDIO""IMAGE""VIDEO""OTHER");
    if (
$structure->subtype) {
        return 
$primary_mime_type[(int) $structure->type] . '/' $structure->subtype;
    }
    return 
"TEXT/PLAIN";
}

function 
get_part($stream$msg_number$mime_type$structure false$part_number false)
{
$prefix "";
    if (!
$structure) {
        
$structure imap_fetchstructure($stream$msg_number);
    }
    if (
$structure) {
        if (
$mime_type == get_mime_type($structure)) {
            if (!
$part_number) {
                
$part_number "1";
            }
            
$text imap_fetchbody($stream$msg_number$part_number);
            if (
$structure->encoding == 3) {
                return 
imap_base64($text);
            } else if (
$structure->encoding == 4) {
                return 
imap_qprint($text);
            } else {
                return 
$text;
            }
        }
        if(
$structure->type == 1/* multipart */
        
{
            while (list(
$index$sub_structure) = each($structure->parts)) {
                if (
$part_number) {
                    
$prefix $part_number '.';
                }
                
$data get_part($stream$msg_number$mime_type$sub_structure$prefix . ($index 1));
                if (
$data) {
                    return 
$data;
                }
            }
        }
    }
    return 
false;
}




// hier Script mit den Benutzerdaten des POP3-Servers konfigurieren
$hostname "pop3.web.de";
$username "sagichnicht";
$kennwort "findsraus";

$mailbox imap_open("{".$hostname."}"$username$kennwort);
// $mailbox = imap_open ("{".$hostname.":110/pop3}INBOX", $username, $kennwort); // für GMX und andere bekannte Freemailer


$mails imap_fetch_overview($mailbox,"1:*"FT_UID); // Holt eine Übersicht aller Emails
$nachricht_tell "";

$size=count($mails); // Anzahl der Nachrichten
$cmsg 0;           // Zur Ausgabe einer fortlaufenden Nummer

for ($i=$size-1$i>=0$i--) { // für alle vorhandenen Mails durchlaufen

    
$cmsg++;
    
$value $mails[$i];
    
    
$mail get_part($mailbox$value->msgno"TEXT/PLAIN"); // aus der Nachricht den Plaintext holen

    // Vorlesetext zusammenbasteln....
    
$nachricht_tell .= "Nachricht Nummer ".$cmsg." von ".$value->from.". Betreff: ".$value->subject.".";
    
$nachricht_tell .= "Inhalt: ".$mail.".";
    
}

imap_close($mailbox); // Verbindung zum POP3-Server beenden

TTS_Speak(47164,  $nachricht_tell); // Vorlesen per TTS - Instance ID anpassen!!!


?>

Geändert von GreenT (08.03.07 um 13:12 Uhr) Grund: Fehler beseitigt; $prefix mit Startwert
Mit Zitat antworten
  #2 (permalink)  
Alt 07.03.07, 14:12
Benutzerbild von guyabano
Senior Member
 
Registriert seit: Nov 2005
Ort: Luxemburg
Beiträge: 2,733
Standard

schön wärs, wenn man endlich mal ein Skript hätte, mit dem man auch SSL secure Server POP3 emails abfragen könnte, z.B. GMAIL. Aber bisher habe ich hier noch nichts brauchbares/funktionierendes gefunden.

mfG Franz
__________________



11x HMS TF - 1x HMS T - 3x FHZ WLAN - 11x FHT80+TF - 4x FS20RST EcoRoll - 1x FS20SIG - 1x Comfort Comfort-Programmiergerät CRSZ-00/01 - 1x USB PC-Schnittstelle CKOZ-00/03 - 3x Dimmer CDAU-01/02 - 7x BIN 230VAC Eingang CBEU-02/01 - 6x Schaltaktor CSAU-01/01 - 1x Analog-Aktor 1-10V CAAE-01/02 - 5x Wandsender CTAA-02/02
Mit Zitat antworten
  #3 (permalink)  
Alt 07.03.07, 15:05
Benutzerbild von Doctor Snuggles
Senior Member
 
Registriert seit: Sep 2005
Beiträge: 908
Standard

Ich find's gut, wenn funktioniert. Werde es heute abend wenn Zeit ist gleich mal testen.

Grüße,
Doc
Mit Zitat antworten
  #4 (permalink)  
Alt 07.03.07, 20:34
Junior Member
 
Registriert seit: Jan 2007
Beiträge: 15
Standard

@guyabano

Tut mir leid, dass Du Google Mail nicht mit dem Script verwenden kannst. Ursächlich ist ein Fehler in PHP's IMAP Extension.
http://bugs.php.net/bug.php?id=36496&edit=1

Der Fehler ist ganz frisch behoben worden. Inwiefern sich aber die Snapshots von PHP mit IPS nutzen lassen, entzieht sich meiner Kenntnis.
Vielleicht kann sich dazu einer melden, der IPS denkt und lebt?

Marcus

Geändert von GreenT (07.03.07 um 20:38 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 07.03.07, 21:16
Senior Member
 
Registriert seit: Jul 2005
Ort: Schwanewede/Niedersachsen
Beiträge: 920
Standard

@GreenT (Marcus)


Ich bekomme folgende Fehlermeldungen:

<br />
<b>Warning</b>: imap_open() [<a href='function.imap-open'>function.imap-open</a>]: Couldn't open stream {pop.gmx.net} in <b>C:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>66</b><br />
<br />
<b>Warning</b>: imap_fetch_overview(): supplied argument is not a valid imap resource in <b>C:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>69</b><br />
<br />
<b>Notice</b>: Trying to get property of non-object in <b>C:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>80</b><br />
<br />
<b>Warning</b>: imap_fetchstructure(): supplied argument is not a valid imap resource in <b>C:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>26</b><br />
<br />
<b>Notice</b>: Trying to get property of non-object in <b>C:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>83</b><br />
<br />
<b>Notice</b>: Trying to get property of non-object in <b>C:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>83</b><br />
<br />
<b>Warning</b>: imap_close(): supplied argument is not a valid imap resource in <b>C:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>88</b><br />
<br />
<b>Notice</b>: Unknown: [CLOSED] IMAP connection broken (server response) (errflg=2) in <b>Unknown</b> on line <b>0</b><br />



Kannst Du mir einen Tip geben woran es liegen könnte oder was ich falsch mache ?
__________________
Gruss
Horst



IP-Symcon 2.3
IPS-868, FS20, HM
Mit Zitat antworten
  #6 (permalink)  
Alt 07.03.07, 21:20
Member
 
Registriert seit: Jan 2006
Ort: Kirchlengern (OWL)
Beiträge: 71
Standard

Versuch es mal mit der Zeile, anstelle des Originals:
PHP-Code:
$mailbox imap_open ("{".$hostname.":110/pop3}INBOX"$username$kennwort); 
__________________
Shit happens!!
Mit Zitat antworten
  #7 (permalink)  
Alt 07.03.07, 22:15
Benutzerbild von guyabano
Senior Member
 
Registriert seit: Nov 2005
Ort: Luxemburg
Beiträge: 2,733
Standard

Zitat:
Zitat von GreenT Beitrag anzeigen
@guyabano

Tut mir leid, dass Du Google Mail nicht mit dem Script verwenden kannst. Ursächlich ist ein Fehler in PHP's IMAP Extension.
http://bugs.php.net/bug.php?id=36496&edit=1

Der Fehler ist ganz frisch behoben worden. Inwiefern sich aber die Snapshots von PHP mit IPS nutzen lassen, entzieht sich meiner Kenntnis.
Vielleicht kann sich dazu einer melden, der IPS denkt und lebt?

Marcus
Ah ja? Die Bugs sind behoben? Hmm, auch in der von IPS benutzen version? Das wäre ja zu schön ! Ich habe das Skript noch immer, ich werde es mal testen, sobald ich mich 5 Minuten vor dem PC langweile

mfG Franz
__________________



11x HMS TF - 1x HMS T - 3x FHZ WLAN - 11x FHT80+TF - 4x FS20RST EcoRoll - 1x FS20SIG - 1x Comfort Comfort-Programmiergerät CRSZ-00/01 - 1x USB PC-Schnittstelle CKOZ-00/03 - 3x Dimmer CDAU-01/02 - 7x BIN 230VAC Eingang CBEU-02/01 - 6x Schaltaktor CSAU-01/01 - 1x Analog-Aktor 1-10V CAAE-01/02 - 5x Wandsender CTAA-02/02
Mit Zitat antworten
  #8 (permalink)  
Alt 07.03.07, 22:21
Benutzerbild von paresy
Administrator
 
Registriert seit: Feb 2005
Ort: Sarkwitz
Beiträge: 6,370
Standard

Klappt nicht. Das aktuelle PHP Branch ist 5.2.x. IPS läuft z.Z. nur mit 5.1.x.

paresy
Mit Zitat antworten
  #9 (permalink)  
Alt 07.03.07, 22:50
Senior Member
 
Registriert seit: Jul 2005
Ort: Schwanewede/Niedersachsen
Beiträge: 920
Standard

Zitat:
Zitat von H-MAN Beitrag anzeigen
Versuch es mal mit der Zeile, anstelle des Originals:
PHP-Code:
$mailbox imap_open ("{".$hostname.":110/pop3}INBOX"$username$kennwort); 
Danke H-MAN,

hat geklappt. Jetzt bekomme ich nur noch diese Fehlermeldung:

<br />
<b>Notice</b>: Undefined variable: prefix in <b>C:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>48</b><br />
<br />
<b>Notice</b>: Undefined variable: prefix in <b>C:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>48</b><br />

Die Maschine hat mir auch eine Nachricht vorgelesen mehr waren im Augenblick nicht vorhanden. Allerdings wurde mir nicht die Nachrichtnummer und der Betreff genannt.

Also falls Du nochmal helfen möchtest
__________________
Gruss
Horst



IP-Symcon 2.3
IPS-868, FS20, HM
Mit Zitat antworten
  #10 (permalink)  
Alt 08.03.07, 06:21
Junior Member
 
Registriert seit: Jan 2007
Beiträge: 15
Standard

@Horst

Folgende Zeile

PHP-Code:
$prefix ""
einfügen nach Zeile 24:

PHP-Code:
function get_part($stream$msg_number$mime_type$structure false$part_number false)

Dann sollte die Warnung nicht mehr ausgegeben werden.
Mit Zitat antworten
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0