Ankündigung

Einklappen
Keine Ankündigung bisher.

Newseintrag posten mit imap_mail

Einklappen

Neue Werbung 2019

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

  • Newseintrag posten mit imap_mail

    Hallo PHP-Forum,

    Ich möchte in einer Newsgroup im Thread für Veranstaltungshinweise automatisch Ankündigungen posten. Das Problem mit den "PHP-Chronjobs" ist gelöst, jedoch komme ich beim Posting-Teil nicht weiter.

    Der News-Server ist SSL-gesichert, eine Anmeldung mit Usernamen und Passwort ist notwendig.

    Folgendes kleine Codefragment gibt keine Fehler aus, gepostet wird jedoch nichts:

    PHP-Code:

    <?php
    $mb 
    imap_open("{news.meinserver.de:563/nntp/novalidate-cert/ssl}","<username>","<passwort>"OP_HALFOPEN) or die("Fehler");

    $headers .= 'from: mainname@andererserver.de' "\r\n";
    $headers .= 'newsgroups: xyz.test' "\r\n";
    imap_mail("""Hier ist ein Test...""und hier ist der Inhalt... ..."$headers);
    imap_close($mb);
    ?>
    Bin dankbar für jegliche Hilfe!

  • #2
    Hallo,

    hast mal

    PHP-Code:
    error_reporting(E_ALL); 
    eingefügt?

    Reicht es nicht, eine Mail an die Newsgroup zu schreiben? Musst du dafür wirklich den News-Server verbinden? Verstehe nicht so ganz, warum du das brauchen solltest. Am Ende ist es doch kein Unterschied, ob du eine Mail an eine reguläre Adresse schickst oder an die Newsgroup?!

    Sorry, habe sowas noch nicht probiert und muss deshalb so "dumm" fragen.

    Zitat von beezle Beitrag anzeigen
    PHP-Code:

    <?php
    $mb 
    imap_open("{news.meinserver.de:563/nntp/novalidate-cert/ssl}","<username>","<passwort>"OP_HALFOPEN) or die("Fehler");

    $headers .= 'from: mainname@andererserver.de' "\r\n";
    $headers .= 'newsgroups: xyz.test' "\r\n";
    imap_mail("""Hier ist ein Test...""und hier ist der Inhalt... ..."$headers);
    imap_close($mb);
    ?>
    Viele Grüße,

    Dirk

    Kommentar


    • #3
      Danke für den Post. Das mit dem Error-Reporting hat mich schon etwas weiter gebracht. Bin auch eigentlich nicht so der Experte in PHP

      Soweit ich das NNTP-Protokoll verstanden habe, schreibt man, um zu Posten, keine Mails an eine Adresse, sondern meldet sich an seinem Newsserver an und verwendet dann das Kommando POST. Um das zu tun ist schon eine Verbindungsaufnahme notwendig, v.a. wenn der Server SSL-gesichert ist und Authentifizierung verlangt.

      Ich habe das ganze jetzt mit fsockopen gelöst und die NNTP-Schritte "zu Fuß" abgeklappert:

      PHP-Code:

      function postInNewsgroups($sSubject$tText)
      {
          
      // Fuers Debugging...
          
      error_reporting(E_ALL);
          
          
      $server "ssl://news.derServer.de";
          
      $port 563;
          
      $user "name";
          
      $password "passwort";
          
      $bufferLength 1024;
          
      $newsgroups "bla.test";
          
      $from "mein name <meineEmail@emailserver.ru>";

          
      // Connection ...    
          
      $stream fsockopen($server,$port, &$errno, &$errstr,30);    
          if (
      $errno == 0
          {
              echo (
      "Verbindung hergestellt");nl();
          }
          else
          {
              die (
      "Verbindungsfehler");nl();
          }
          
      // echo ($errstr ."\n"); // Debugging
          
          // Authentifizierung
          
      echo (fread($stream$bufferLength)); nl();
          
      fwrite($stream"AUTHINFO USER ".$user"\r\n");
          echo (
      fread($stream$bufferLength)); nl();
          
      fwrite($stream"AUTHINFO PASS ".$password."\r\n");
          echo (
      fread($stream$bufferLength)); nl();
          
          
      // Posten der Nachricht
          
          // Command: POST
          
      fwrite($stream"POST\r\n");
          
      // Daten fuers Posten
          
      fwrite($stream"Newsgroups: ".$newsgroups."\r\n");
          
      fwrite($stream"From: "$from ."\r\n");
          
      fwrite($stream"Subject: ".$sSubject."\r\n");
          
      fwrite($stream"\r\n".$tText."\r\n\r\n.\r\n");

          
      // Nochmal lesen, was der Server so schreibt
          
      echo (fread($stream$bufferLength)); nl();
          echo (
      fread($stream$bufferLength)); nl();
          
      // Verbindung beenden    
          
      fclose($stream);
          
      }

      // Test der Funktion ...
      postInNewsgroups("Ein Test mit Funktion ...""Dies ist der Inhalt\nEs geht auch gleich weiter mit der nächsten Maus...");

      function 
      nl()
      {
          echo(
      "<br/>");

      Damit ist mein Problem quasi gelöst, ich lasse den Thread aber noch auf ungelöst, weil mich interessiert, ob man die gleiche Aufgabe auch mit imap_mail oder anderen PHP-internen "Mailbefehlen" lösen könnte. Weiß jemand, ob das möglich ist?

      gute Nacht,
      beezle

      Kommentar

      Lädt...
      X