php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.01.2012, 15:51  
Benutzer
 
Registriert seit: 27.11.2011
Beiträge: 64
PHP-Kenntnisse:
Anfänger
daniel_1998 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Email senden über fputs + Zustellbericht

N'abend,

folgendes Script funktioniert:
PHP-Code:
    // Initiate connection with the SMTP server
    
$handle fsockopen($smtp_server,$port);
    
fputs($handle"EHLO ".$mydomain."\n");
    
// SMTP authorization
    
fputs($handle"AUTH LOGIN\n");
    
fputs($handlebase64_encode($username)."\n");
    
fputs($handlebase64_encode($password)."\n");
    
// Send out the e-mail
    
fputs($handle"MAIL FROM:<".$sender.">\n");
    
fputs($handle"RCPT TO:<".$recipient.">\n"); 
    
fputs($handle"DATA\n");
    
fputs($handle"To: ".$recipient."\n");
    
fputs($handle"Subject: ".$subject ."\n");
    
fputs($handle"MIME-Version: 1.0\n");
    
fputs($handle"Content-type: text/html; charset=iso-8859-1\n"); 
    
//fputs($handle, $output."\n");
    
fputs($handle".\n");
    
// Close connection to SMTP server
    
fputs($handle"QUIT\n");
    
    
var_dump($handle); 
Hierzu hätte ich 2 Fragen.

Ich würde fputs gern debuggen. print_r bringt nur Resource id #3
und var_dump nur resource(3) of type (stream)
Erhoffen tu ich mir irgendein Output, wo mir Bestätigt wird, das die Email zugestellt worden ist.

Was mich dann auch gleich zur Frage 2 führt.
Ich kann kein Befehl in den dok's finden, wie ich mein Script mitteilen kann, dass ich eine Übermittlungsbestätigung bekommen möchte... idealerweise sogar eine Lesebestätigung.

Bei der Übermittlungsbestätigung bin ich mir nicht ganz im klaren, wer der z.B. in Outlook generiert. Outlook selbst, indem er seine eigene Logs kontrolliert und im Erfolgsfall eine Email generiert, oder ob die tatsächlich vom Server kommt, der die Email bekommen hat.
Lesebestätigung müßte ja auf alle Fälle vom empfangenden Server kommen. (Dass das nicht immer klappt und der Empfänger das auch ausschalten kann, ist mir bewust.)


Kann einer Helfen ?
__________________
13 Jahre // Fortgeschrittene PHP-Kenntniss (Altersentsprechend).
JS-Kenntnis: Neuling.
daniel_1998 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.01.2012, 16:53  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von daniel_1998 Beitrag anzeigen
Was mich dann auch gleich zur Frage 2 führt.
Ich kann kein Befehl in den dok's finden, wie ich mein Script mitteilen kann, dass ich eine Übermittlungsbestätigung bekommen möchte...
Geht nicht. Du schickt die Mail an Deinen SMTP via SMTP Auth. Das Teil nimmt den Brief entgegen - das wars. Ob und wann Dein SMTP den Brief beim Empfanger Postamt losgeworden ist, kannst Du nur dann erkennen, wenn der Brief als unzustellbar zurückkommt. Und das kann bis zu 7 Tage dauern...

Zitat:
idealerweise sogar eine Lesebestätigung.
Eine Lesebestätigung gehört nicht zum Protokoll sondern ist Bestandteil des Email Headers.

Ich lösche den Rotz (die Lesebestätigung) immer - es geht keine Sau was an, wann und ob ich eine Email lese.
  Mit Zitat antworten
Alt 01.01.2012, 18:20  
Benutzer
 
Registriert seit: 27.11.2011
Beiträge: 64
PHP-Kenntnisse:
Anfänger
daniel_1998 befindet sich auf einem aufstrebenden Ast
Standard

Okay. Soweit verstanden.
Aber wie macht es dann Outlook ?
Wertet dieser seine eigene Sendungsprotokolle aus?

Ich hab mittlerweile auf swiftmailer umgesattelt. Ging reichlich einfach und klappt auch schon alles. Fraglich ist halt auch hier wieder ob ich ein Zustellbericht von swiftmailer generiert bekomme... oder wie ich swiftmailer debugge.
Die Doku ist leider alles auf Englisch und deutsche Doks sind anscheind rar.
__________________
13 Jahre // Fortgeschrittene PHP-Kenntniss (Altersentsprechend).
JS-Kenntnis: Neuling.
daniel_1998 ist offline   Mit Zitat antworten
Alt 01.01.2012, 19:31  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von daniel_1998 Beitrag anzeigen
Okay. Soweit verstanden.
Aber wie macht es dann Outlook?
Outlook denkt sich was aus. Das Einzige, was sicher ist: Outlook durfte den Brief in den Briefkasten seines SMTP reinschmeissen. Der versucht nun 7 Tage lang, den Brief zuzustellen. Falls sich der Ziel-SMTP nicht innerhalb der Frist meldet oder der was gegen den Adressaten oder Absender hat, kriegt Outlock die Mail incl. SMTP Mecker wieder zurück.

Gabs kein Mecker wartet die Msil im Zielpostamt darauf, daß sich der Empfänger mal meldet. Hat der die Mail, ist aber so gemein wie ich und killt die Lesebestätigung, dann wars das. Email-Versand is so wie Telegrafie mit Rauchzeichen: absolut keine Info, obs wer gelesen hat.

Zitat:
Ich hab mittlerweile auf swiftmailer umgesattelt.
Gurte Lösung. Mit den beiden Mailklassen (swiftmailer oder phpmailer) biste auf dem richtigen Weg, korrekte Emails zu verschicken, wenn Du folgendes noch beachtest:
1. zur Emailadresse (From: und To: ) gehört noch der Name.
2. solltest DU HTML Emails verbrechen: vergeß nicht den plain text Part. SPAM Filter achten darauf.
3. falls Dich das nicht abgeschreckt hat: Keine externe Quellen verwenden! Mein MUA - ich verwende TheBat - zeigt externe Quellen nicht an. Die Emails sehen dann immer sehr lustig aus: weiße Schrift auf weißem Hintergrund und ein paar leere Bilderrahmen. PEARL zeigt sich da trotz bebilderter Kritik hochgradig erkenntnisresistent.

Zitat:
Fraglich ist halt auch hier wieder ob ich ein Zustellbericht von swiftmailer generiert bekomme...
Das geht nicht. Auch swiftmailer kann nicht hellsehen.

Zitat:
Die Doku ist leider alles auf Englisch und deutsche Doks sind anscheind rar.
Jo, das ist leider so üblich.
  Mit Zitat antworten
Alt 01.01.2012, 19:43  
Benutzer
 
Registriert seit: 27.11.2011
Beiträge: 64
PHP-Kenntnisse:
Anfänger
daniel_1998 befindet sich auf einem aufstrebenden Ast
Standard

Oki..

also 1 + 2 hab ich schon umgesetzt.
3 ist mir zu abschreckend. Zur Kontrolle reicht mir erstmal Outlook. Später kann ich mir das ja dann nochmal in plain Text auf den Server direkt ansehen. Aber es muß erstmal funktionieren.

Zitat:
Zitat von meikel Beitrag anzeigen
Das geht nicht. Auch swiftmailer kann nicht hellsehen.
Ich glaub, da muß ich dir wiedersprechen. Ich hab mir jetzt schon die Quelldatein angesehen und folgendes gefunden:

PHP-Code:
  public function testReadReceiptAddressReadFromHeader()
  {
    
$rcpt $this->_createHeader('Disposition-Notification-To',
      array(
'chris@swiftmailer.org'=>'Chris')
      );
    
$message $this->_createMessage(
      
$this->_createHeaderSet(array('Disposition-Notification-To' => $rcpt)),
      
$this->_createEncoder(), $this->_createCache()
      );
    
$this->assertEqual(array('chris@swiftmailer.org'=>'Chris'),
      
$message->getReadReceiptTo()
      );
  } 
Das ist ein Auszug aus den Demofiles. Aktuell beiße ich mir nur grad die Zähne daran aus, das in mein Script reinzubekommen.
Irgendwie n bissel tricky diese funtion anzusprechen.

Wäre schön, wenn einer sih zu Worte melden würde, der auch Swiftmailer einsetzt... und ggf. sogar einen Sendebericht oder Priorität einsetzt.

Danke (Auch dir @meikel für die einfachen Erklärungen)
__________________
13 Jahre // Fortgeschrittene PHP-Kenntniss (Altersentsprechend).
JS-Kenntnis: Neuling.
daniel_1998 ist offline   Mit Zitat antworten
Alt 01.01.2012, 20:01  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von daniel_1998 Beitrag anzeigen
3 ist mir zu abschreckend. Zur Kontrolle reicht mir erstmal Outlook. Später kann ich mir das ja dann nochmal in plain Text auf den Server direkt ansehen. Aber es muß erstmal funktionieren.
Erstelle lieber erst mal reine Textmails. Beachte dabei die Zeilenlänge. Üblich sind 74-76 Zeichen je Zeile. Es dürften zwar mehr sein, aber das wird als 'Pfui' angesehen. Mindestens von mir. <ggg>

Zitat:
Ich glaub, da muß ich dir wiedersprechen. Ich hab mir jetzt schon die Quelldatein angesehen und folgendes gefunden:
Abgelehnt. Swiftmailer unterhält sich mit Deinem SMTP:
1. er stellt sich vor
2. er schickt den Brief Zeile für Zeile hin. Letzte Zeile beginnt nur mit einem Punkt und ist das Kennzeichen für 'das wars'.
3. die Verbindung wird beendet.

So ist das Protokoll. Was Dein SMTP mit dem Brief anstellt - swiftmailer erfährt davon nix. Klar wie Senfsoße - das Script müßte im Extremfalle 7 Tage durchlaufen...

OK?
  Mit Zitat antworten
Alt 01.01.2012, 20:34  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Zitat:
Zitat von daniel_1998 Beitrag anzeigen
Aber wie macht es dann Outlook ?
Kleine Anmerkung am Rande - ergänzend zu meikels Ausführungen: Outlook kann nicht nur SMTP. Wenn Outlook mit seinem Server MAPI spricht, dann sieht die Sachlage einfach anders aus. Zu MAPI gehört nämlich IIRC auch die Verarbeitung eines Gelesen-Status.

Und zum Thema SMTP sei auch noch erwähnt, dass auch SMTP Fehlerstati beinhaltet, von denen der sendende Mailer durchaus was erfährt. Die interessante Frage in diesem Konglomerat ist eigentlich nur, mit welchem SMTP-Server PHP redet. Wenn PHP nur mit einem Smarthost/SMTP-Relay redet - wie meikel unterstellt - dann erfährt PHP auch nicht, wenn die Gegenseite die Mail (aus welchen Gründen auch immer) ablehnt. Richtige MX-Records voraus gesetzt, wäre es aber durchaus auch möglich, PHP direkt mit dem Ziel-MTA reden zu lassen und dann gibt es natürlich auch für den Absender mehr Informationen.

Noch anders sieht die Sache bei Disposition-Notification-To: & Co aus. Das sind Bestandteile einer SMTP-Erweiterung, die dafür sorgen, dass der empfangende MTA weiß, wohin er einen Fehlerbericht senden soll. Auch dieses Ziel kann PHP natürlich u.Umst. abfragen. Problematisch ist hier eher, dass die Fehlerberichte nicht standardisiert sind und es deshalb oftmals schwierig ist, einen Fehler a) als solchen zu erkennen und ihn b) der ursprünglichen Mail zu zu ordnen.

Ach ja - was die Priorität angeht: Die gibt es eigentlich gar nicht. Es gibt eigentlich keinen X-Priority-Header, mit dem Du die Mail-Prioriät zwischen 1 und 5 festlegen kannst. Outlook (und einige andere Clients) verarbeiten diesen allerdings trotzdem. Beim SwiftMailer kannst Du den u.A. per _createHeader() (aber auch per Header-Zuweisung außerhalb der Klasse) natürlich in Deine Mail einbetten.

Gruß Jens

Geändert von Jens Clasen (01.01.2012 um 20:38 Uhr).
Jens Clasen ist offline   Mit Zitat antworten
Alt 01.01.2012, 20:46  
Benutzer
 
Registriert seit: 27.11.2011
Beiträge: 64
PHP-Kenntnisse:
Anfänger
daniel_1998 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Jens Clasen Beitrag anzeigen
Beim SwiftMailer kannst Du den u.A. per _createHeader() (aber auch per Header-Zuweisung außerhalb der Klasse) natürlich in Deine Mail einbetten.
Juhuu... das klingt schon mal nach vorankommen. Ich such im Web schon wie n dämlicher nach irgendwelchen Hinweisen.

Mal auf die schneller ausprobiert: Aber wie meine unzähligen vorherigen Test bringt das nur Fehlermeldungen

$mail->_createHeader('X-Priority', '1');


Aber vvlt. dürfte ich die Hilfesteller auf folgenden internen Link lenken.
Dort habe ich mal dieses Problem mal mit meinen kompletten Code gepostet.

In diesem Thread ging es anfänglich über fputs ... Swiftmailer hat damit nun nichts mehr zu tun, weshalb ich es auch recht früh schon ale [erledigt] kennzeichnete.
Wäre schön, wenn wir hier mit den anderem Problem weiter machen können.
http://www.php.de/php-einsteiger/868...versenden.html (SwiftMailer Email mit Priorität versenden)
__________________
13 Jahre // Fortgeschrittene PHP-Kenntniss (Altersentsprechend).
JS-Kenntnis: Neuling.
daniel_1998 ist offline   Mit Zitat antworten
Alt 01.01.2012, 20:51  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Jens Clasen Beitrag anzeigen
Wenn PHP nur mit einem Smarthost/SMTP-Relay redet - wie meikel unterstellt -
Und mit Recht, wenn SMTP-Auth zum Eunsatz kommt.

[...]

Danke für die Info.
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Iconv Email Parser bzw. Installation Bornheimer Server, Hosting und Workstations 1 01.04.2010 04:52
Sicherheit Email-Versand - SSL Zertifikate und PGP taurus PHP Tipps 2009 23 06.12.2009 20:15
[Erledigt] PHP Email, aber keine Failure Notice lordwimmi PHP-Fortgeschrittene 4 20.10.2009 22:11
Suche PHP-Code um User name in Admin Control Panal zu senden (über der DB) Lach26 Scriptbörse 12 16.07.2009 20:54
Mit PHP befehle über Lan senden scripper PHP-Fortgeschrittene 3 18.07.2008 11:23
Daten senden über POST oder GET snatch-ic PHP Tipps 2008 6 12.03.2008 20:46
Email senden mit Anhang aus URL ??? c-bass PHP-Fortgeschrittene 10 14.02.2006 19:47
Email aus PHP-Seite senden ohne "mail" Funktion PHP Tipps 2007 9 28.12.2005 14:53
Email über "fremden" SMTP Server schicken PHP Tipps 2005-2 0 18.09.2005 00:44
Variablen über Post senden FireFIghter PHP Tipps 2005-2 2 06.09.2005 20:37
Email über richtigen Mailserver schicken? PHP Tipps 2005-2 4 03.08.2005 16:34
Bild per email über Formular versenden PHP Tipps 2005-2 8 30.07.2005 14:46
Ganz einfach eine Email über Kontaktformular versenden. Wie? 'progman' PHP Tipps 2004-2 1 07.11.2004 17:11
[Erledigt] Formular via Mail über Php senden? PHP Tipps 2004 3 21.07.2004 14:09
email über Link weiterversenden PHP Tipps 2004 2 12.07.2004 22:11

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
c smtp client fputs, php mail übermittlungsbestätigung, php mail function headers übermittlungsbestätigung, lesebestätigung spruch, error \resource(3) of type (stream)\, sendungsprotokoll outlook, schreiben auf fremden server php fputs

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum