alternative zu popen/pclose?

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

  • alternative zu popen/pclose?

    hiho@ll

    ich muss den phpmailer umschreiben, damit ich per sendmail ein mail verschicken kann (dass kann die klasse ja schon) und ich mit einer message id den mail status abfragen kann (das möcht ich hinzufügen)

    /**
    * Sends mail using the $Sendmail program.
    * @access private
    * @return bool
    */
    function SendmailSend($header, $body) {
    if ($this->Sender != "")
    $sendmail = sprintf("%s -oi -f %s -t -v", $this->Sendmail, $this->Sender);
    else
    $sendmail = sprintf("%s -oi -t -v", $this->Sendmail);

    if(!@$mail = popen($sendmail, "w"))
    {
    $this->SetError($this->Lang("execute") . $this->Sendmail);
    return false;
    }

    fputs($mail, $header);
    fputs($mail, $body);

    $result = pclose($mail) >> 8 & 0xFF;
    if($result != 0)
    {
    $this->SetError($this->Lang("execute") . $this->Sendmail);
    return false;
    }

    return true;
    }


    das ist der code den ich umschreiben muss
    es wird popen bzw. pclose verwendet
    sendmail erhält von mir zusätzlich -v als parameter um eine detailierte ausgabe zu erhalten und damit die message ID
    das problem:
    popen liefert leider nur eine unidirektionale pipe
    d.h. ich kann nur was in den prozess reinschreiben (header bzw. body) aber nichts daraus lesen (die message id)

    ich hab schon an proc_open gedacht, aber
    wie siehts mit der kompatibilität zu windoof aus? hat da schon jemand erfahrung gemacht?
    hat jemand einen alternativen vorschlag?
    ich könnt glaub ich mit popen stdout des prozesses in ein file umleiten und dann das file auslesen? (wär eine möglichkeit und dass kann windoof glaub ich auch)

    thx@ll

  • #2
    Mal mit proc_open() versucht?

    Kommentar


    • #3
      habs mit proc_open probiert, dass liefert aber einen returncode von -1
      laut der php doku ist das ein known bug

      d.h. ich brauch aber den exit code um zu wissen obs funktioniert hat oder nicht

      es gäbe eine alternative um den exit code auf einen eigenen descriptor umzuleiten

      dazu müsste ich

      echo $? >&3

      an mein sendmail command dranhängen
      das problem: windows kann das mit dem echo scheinbar nicht
      zumindest liefert "dir;echo $? >&3" nichts sinnvolles

      entweder ich lass es jetzt so und hoffe das es irgendwann ein update für php gibt in der das behoben ist (was es angeblich bereits ist *nochprüfenmuss*)
      oder
      es kennt jemand eine gute alternative für windoof und linux

      Kommentar


      • #4
        Ja die WinShell ist ziemlich beschränkt. Aber es gibt auch Bash für Windows ...

        Kommentar

        Lädt...
        X