Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatisch Email Attachments ablegen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Automatisch Email Attachments ablegen

    Hallo,

    seit 2 Jahren versuche ich nun immer mal wieder den Einstieg ins "HobbyPHP" um mir auch nur eine einzige Aufgabe zu automatisieren.

    Leider scheitere ich jedes mal und versuche es mal hier.

    Projekt:
    - Es wird eine Email mit Attachment verschickt (Subject z.B. "Titel - DD-MM-YYYY / HH:MM:SS)
    - Bei Eingang einer neuen Email soll automatisch ein PHP Script auf meiner Synology DS212j nach PRüfung auf korrekten (immer gleichen) Dateinamen das Attachment auf einem FTP Server ablegen

    Leider scheitert es bei mir immer schon an den grundlegenden Dingen, wie z.B. den GMAIL account über das PHP der DS212j abzufragen .... sollte GMail generell schwierig sein kann auch jede andere beliebige kostenlose Emailadresse verwendet werden. Diese Emailadresse soll ausschliesslich für diesen Zweck verwendet werden (also IMAP oder POP ... wäre egal)

    Wäre für eine "Ready to Run" hilfe sehr dankbar ... ggf auch gegen Entgelt (bitte dan PN an mich, wenn das im Forum geht), damit meine "Pfuscherei" endlich mal ein Ende hat ... jeden Weihnachtsurlaub fange ichs wieder an, und gebe nach einigen Tagen entnervt wieder auf ....

    PHPinfo auf DS212j funktioniert. Die entsprechende Info könnte ich schicken.
    Ich habe in den Synology Foren auch schon Probleme mit PHP und Mailaccess (IMAP) gelesen, hier sollte sich ggf. jemand also mit Synology auskennen.

    Eine entsprechende PHP Class (mailattachmentreader) und hunderten Versuchen mit den entsprechenden Ports und Portfreischaltungen .... ..
    konnte meine WEissheit hier leider auch nicht verbessern.

    Schöne Grüsse vom Entnervten ....

  • #2
    Na dann, das problem suchen:

    (..) hunderten Versuchen mit den entsprechenden Ports und Portfreischaltungen ...
    wieso denn das, versuch doch mal ein connect über telnet
    Code:
    telnet MAILSERVER_IP 110
    110 steht glaub ich für pop3 und die ip deiner Maiolserver(name geht auch) wirste ja haben.
    dann liegst schonmal nicht an den ports.

    http://flourishlib.com/docs/fMailbox#fMailbox

    das durechlesen und der rest woie wie von alleine!

    viel spass

    Kommentar


    • #3
      Danke,

      aber wenn ich über

      telnet imap.gmail.com 993

      versuche, bekomme ich keine Rückmeldung

      Da scheitert das ganze schon ....

      Kommentar


      • #4
        Ih hoffe du hast das so in der Konsole eingegeben und nicht gedacht, das Ganze sei "ein Host" :S ?

        Kommentar


        • #5
          Yep ... mit telnet auf die Diskstation und dann:

          DiskStation-212> telnet imap.gmail.com 993

          Kommentar


          • #6
            Hier ist ein Zitat aus der GMAIL-Hilfe, mit den Ports etc

            Code:
            Standard-Konfigurationsanleitung:
            
            Posteingangsserver (POP3) – SSL erforderlich:	 pop.gmail.com
            SSL verwenden:                                   Ja
            Port:                                            995
            
            Postausgangsserver (SMTP) – TLS erforderlich:	 smtp.gmail.com
            Authentifizierung verwenden:                     Ja
            Port für TLS/STARTTLS:                           587
            Port für SSL:                                    465
            
            Server-Timeout-Werte	                         Mehr als 1 Minute; wir empfehlen 5 Minuten
            Vollständiger Name oder Anzeigename:	         [Ihr Name]
            Konto- oder Nutzername:	                         Ihre vollständige E-Mail-Adresse (mit @gmail.com bzw. @ihre_domain.de)
            E-Mail-Adresse:	                                 Ihre E-Mail-Adresse (nutzername@gmail.com bzw. nutzername@ihre_domain.de)
            Passwort:	                                 Ihr Gmail-Passwort
            Wie man sieht, ist gmail nur mit SSL zu erreichen. Wenn du das mit telnet prüfen willst, benötigst du telnet-ssl

            Ein einfacher Test wäre:
            PHP-Code:
            <?php
            $email 
            "mail@gmail.com";
            $password "somepassword";

            $mbox imap_open("{pop.gmail.com:995/pop3/ssl/novalidate-cert}"$email$password
                    or die(
            "Failed with error: ".imap_last_error());
            die(
            "success");
            ?>
            Weitere Informationen zu den Imap* Funktionen findest du hier http://de2.php.net/imap

            Kommentar


            • #7
              Wie man sieht, ist gmail nur mit SSL zu erreichen. Wenn du das mit telnet prüfen willst, benötigst du telnet-ssl.
              genau, oder eben
              Code:
              openssl s_client -starttls imap -connect host.port
              ich hab mal um smime zu testen quick and dirty was gemacht, kein gutes Code, aber möglicherweiese mal der Anfang beim rumspielen:

              https://github.com/strlcp/php/blob/m...ap-decrypt.php

              Kommentar


              • #8
                Yipiie

                Ihr seid meine Helden !!

                Jetzt funktioniert mit der richtigen Abfrage von Frank auch die Attachmentreaderclass !!! ... dabei dachte ich ich hätte schon alle X möglichen Varianten mit Port und novalidate, ... ausprobiert.

                Jetzt kommt hoffentlich die letzte Frage des PHP Dummies ....

                Im IE oder FF kann ich mit der Abfrage:
                http://MeineIP/Mailattachmentreader/MeinPHPScript.php

                das Speichern von Attachments auslösen. Lässt sich dass z.B. auch automatisieren, dass dieses script alle 10 Min. gestartet wird und dann z.B. alle Email in der Inbox nach Ausführung gelöscht werden ?

                DAnn wäre mein Automatisierungsjob nämlich fertig !

                Gruss

                Holger

                --> MeinPHPScript.php
                <?^M
                require_once("attachmentread.class.php");^M
                $host="{pop.gmail.com:995/pop3/ssl/novalidate-cert}INBOX"; // pop3host^M
                $login="MeineEmail@gmail.com"; //pop3 login^M
                $password="MeinPasswort"; //pop3 password^M
                $savedirpath="" ; // attachement will save in same directory where scripts run o
                $jk=new readattachment(); // Creating instance of class####^M
                $jk->getdata($host,$login,$password,$savedirpath); // calling member function^M
                ?>

                Kommentar


                • #9
                  cron

                  Kommentar


                  • #10
                    Ok, klingt gut. Das sollte sich mit der DS212j machen lassen.

                    http://www.myezcontrol.de/forum/2-al...&start=12#7488

                    Ich schaus mir die Tage an !!

                    Danke

                    Kommentar


                    • #11
                      Fast geschafft / open_basedir Fehler

                      Hallo, bin mit meinem Script soweit, dass es die grundlegendenden Dinge tut

                      Allerdings habe ich jetzt noch ein Problem

                      Der Dateianhang, den ich aus der Email extrahiert habe muss noch verschoben/kopiert werden.

                      Das mache ich mit folgendem Statement:
                      $file = '/volume1/web/Attachmentread/File.ics';
                      $newfile = '/var/services/homes/user2/www/calender.ics';
                      if (!copy($file, $newfile)) {
                      echo "copy $file schlug fehl...\n";
                      }

                      Mein Script starte ich auf meiner Synology 212j mit:
                      SynologyIP/Attachmentread/XXX.php

                      und erhalte dann die Fehlermeldung

                      Warning: copy(): open_basedir restriction in effect. File(/var/services/homes/user2/www/calender.ics) is not within the allowed path(s): (/etc.defaults:/usr/bin/php:/usr/syno/synoman:/etc:/var...... :/var/services/homes) ....

                      Ich habe nach einer Fehlererklärung im www geprüft und diese Seite gefunden.
                      http://www.synology-wiki.de/index.ph...ini_bearbeiten

                      Dementsprechend habe ich dann den ganzen Pfad :/var/services/homes/user2/www dem open_basedir Pfad in der /usr/syno/etc/php/user-setting.ini angehängt und den Apache neu gestartet.

                      Aber trotzdem zeigt er mir die gleiche Fehlermeldung an und auch wird mir nicht der erweiterte Pfad inkl. /user2/www angezeigt ...

                      Irgendwelche Ideen ?

                      Gruss

                      Holger

                      Kommentar


                      • #12
                        Kann es sein, dass du das in der httpd.conf-user ändern musst oder hast du bereits ein Model, in dem es nicht mehr da geändert wird?

                        Kommentar


                        • #13
                          DAnke für die Info.

                          Ich denke dass ist was Synology Spezielles. Ich hab nichts geändert, aber in der /usr/syno/apache/conf/httpd.conf-user hab ich keinen Eintrag zu open_base ... ...

                          Vielleicht muss ich doch mal die Synlogy ganz neu starten, um sicher zu sein, dass der Apache alle Änderungen korrekt übernommen hat.

                          ... da werde ich dann erst mal mein Backup abwarten (1,5 TB ... ... und dann mal schauen.

                          Gruss

                          Kommentar


                          • #14
                            1.) bitte benutze code/php tags!!!

                            2.)
                            Warning: copy(): open_basedir restriction in effect.
                            File(/var/services/homes/user2/www/calender.ics) is not within the allowed path(s): (/etc.defaults:/usr/bin/php:/usr/syno/synoman:/etc:/var...... :/var/services/homes)
                            wieso soll /var/services/homes/bla nicht in /var/services/homes sein?
                            sonderbar sonderbar.

                            Kommentar


                            • #15
                              Stimmt, ist komisch, ich verstehe es auch nicht, aber die Fehlermeldung nennt es so ....
                              /var/services/homes/user2/www/calender.ics is not within the allowed path ... und dann heisst es, dass /var/services/homes Bestandteil des allowed path st ...

                              siehe:

                              Warning: copy(): open_basedir restriction in effect. File(/var/services/homes/user2/www/calender.ics) is not within the allowed path(s): (/etc.defaults:/usr/bin/php:/usr/syno/synoman:/etc:/var/run:/tmp:/var/spool/php:/volume1/@tmp/php:/var/services/web:/var/services/photo:/var/services/blog:/var/services/homes) in /volume1/web/Attachmentread/ReadGmailAtt.php on line 12 Warning: copy(/var/services/homes/user2/www/calender.ics): failed to open stream: Operation not permitted in /volume1/web/Attachmentread/ReadGmailAtt.php on line 12 copy /volume1/web/Attachmentread/File.ics schlug fehl...

                              Kommentar

                              Lädt...
                              X