php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.03.2007, 11:37   #1 (permalink)
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 152
DonTermi
Standard Unterschied zwischen mail() und popen(/usr/sbin/sendmail)...

Hallo,

ich habe mir einen kleinen mini-mailer geschrieben der Anhand des Contents einen Mail Header und einen Mail Body zusammenbaut und diese dann per

popen(/usr/sbin/sendmail ...) versendet.

Was ist eigentlich der Unterschied zur PHP Funktion mail() ? Dient mail() als Wrapper für sendmail? Ich habe auf Hosteurope ein aktuelles Hosting und wenn ich ne simple mail ala

Code:
mail(to, subject, message);
versenden will erhalte ich aus mail ein false zurück.
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.03.2007, 11:51   #2 (permalink)
Erfahrener Benutzer
 
Registriert seit: 11.10.2005
Beiträge: 2.250
dsmcg ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von PHP Manual
PHP muss während des Kompilierens Zugriff auf die Binärversion von sendmail auf Ihrem Rechner haben. Falls Sie ein anderes Mail-Programm, wie z.B. qmail oder postfix, benutzen, müssen Sie dafür sorgen, dass Sie den passenden, mitgelieferten sendmail-Wrapper verwenden. PHP sucht nach sendmail zunächst im System-PATH und anschließend hier: /usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib. Wir empfehlen, dass sendmail auf Ihrem Rechner im PATH verfügbar ist. Der Benutzer, der PHP kompiliert hat, muss die Berechtigung haben, auf die Binärversion von sendmail zuzugreifen.
So wie ich das verstehe, ja.

Zeig mal wie du versucht hast ne mail zu schicken (genauen Code)

Empfehlenswert: http://phpmailer.sourceforge.net/
dsmcg ist offline  
Alt 27.03.2007, 11:54   #3 (permalink)
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.506
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

*öhm* Ich kann dir dazu jetzt keine genaue Stellungnahme geben aber kennst du den hier: http://phpmailer.sourceforge.net/

Mit dem kannst saubere Mails verschicken. Wenn du lernen willst wie was wo dann ist ok ..

der sendmail path wird wird in der php.ini festgelegt.
Vllt ist der nicht richtig deklariert.



Oder irgendein anderer Fehler hat sich eingeschlichen ....


// EDIT: Omg ... ich sollt immer erst 5 Min warten ob da nicht jemand gerade das gleiche schreibt
M3g4Star ist offline  
Alt 27.03.2007, 11:57   #4 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.223
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo DonTermi,

ich frag mich, warum du den "Umweg" über popen() machst. Einfacher geht das doch mit exec(), passthou() oder system(). Dort kannst du System-Befehle ausführen.

Warum nun mail()? Ganz einfach: um eine weitere Abstraktions-Stufe einzuführen. In der php.ini kann man definieren, welchen MTA man verwenden möchte. Einige verwenden sendmail, andere wieder postfix. Du müsstest mit der ersten Variante immer deine Applikationen ändern, je nach dem, wo du sie einsetzt. Deshalb führt man Abstraktion ein und gibt dem PHP-Entwickler ein Standard-Interface an, mit dem er arbeiten kann und das sich nicht von System zu System ändert.

Zitat:
[..] ein false zurück.
Hmm, dann ist die Frage, ob dein Hoster PHP richtig für den Versand von Mails konfiguriert hat. Um dies herauszufinden, solltest du dir mal die KOnfigurationseinstellungen gemäß http://de2.php.net/manual/de/ref.mail.php per phpinfo() ansehen und vergleichen. SOllte dort beispielsweise kein sendmail_path definiert sein, könnte das schon das Problem sein. Andererseits ist es auch möglich, dass irgendein SPAM-Filter deine Mail schluckt. Zeig mal den Code für mail(), den du geschrieben hast.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 27.03.2007, 11:58   #5 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.223
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

.. ich tipp einfach zu langsam, oder zu viel
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 27.03.2007, 12:41   #6 (permalink)
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 152
DonTermi
Standard

re

Also ich hab nochmal unser 1. Hosting mit dem 2. Hosting (wo mail() nicht geht) verglichen. Die Einträge sind identisch.

Meine Mails versende ich eigentlich so wie es phpmailer macht. Hab hier aber noch ältere Skripte liegen wo einfach nur mail() verwendet wird und es auf unserem 1. Hosting läuft und aber auf dem 2. nicht.

Ich mach nichts anderes als:
Code:
mail('foo@bar.com', 'testbetreff', 'testnachricht');
Auf Hosting 1 wird die Mail versendet und kommt an.
Auf Hosting 2 erhalte ich ein false aus der Funktion zurück und es kommt auch keine Mail an.

Auf beiden Hostings geht meine eigene Mailerklasse (popen direkt über sendmail) wunderbar.
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline  
Alt 27.03.2007, 12:48   #7 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.223
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo DonTermi,

dann würde ich damit mal deinen 2.ten Hoster konfrontieren. Ich möchte mich nicht zu weit aus dem Fenster lehnen, aber ich tippe mal auf falsch installierten postfix-Alias für sendmail.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 27.03.2007, 13:03   #8 (permalink)
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

http://de.php.net/manual/de/function.mail.php
Zitat:
additional_headers (optional)

String, der am Ende des E-Mail-Headers eingefügt werden soll.

Dies kann benutzt werden, um zusätzliche Header-Angaben wie From, Cc oder Bcc anzugeben. Falls mehrere solcher zusätzlichen Header-Angaben angegeben werden soll, müssen diese durch ein CRLF-Zeichen (\r\n) getrennt werden.

Anmerkung: Um eine E-Mail zu senden, muss die E-Mail einen From-Header enthalten. Dies kann entweder durch Setzen eines additional_headers-Parameters oder durch Setzen eines Standardwertes in der php.ini geschehen.

Falls dies nicht geschieht, wird eine Fehlermeldung ähnlich wie Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing ausgegeben. Der From: Header setzt unter Windows auch den Return-Path: Header.

Anmerkung: Wenn E-Mails nicht ankommen, versuchen Sie bitte, nur das LF-Zeichen (\n) zu verwenden. Einige UNIX-MTAs (mail transfer agents) ersetzen leider LF durch CRLF (\r\n) automatisch (wodurch das CR-Zeichen verdoppelt wird, wenn CRLF verwendet wird). Dies sollte aber nur in Ausnahmefällen geschehen, da es gegen » RFC 2822 verstößt.
Setz einfach mal ein einen gültigen From ein, das war bei uns damals das Problem.
Zergling-new ist offline  
Alt 27.03.2007, 13:25   #9 (permalink)
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 152
DonTermi
Standard

War nah dran

der 5. Parameter war das Problem.

Code:
mail('foo@bar.com', 'subject', 'message', 'From: service@tld.com', '-f service@tld.com');
Danach gings.
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline  
 


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
Unterschied zwischen "=" und LIKE Ticos Datenbanken 2 14.03.2007 00:16
Unterschied zwischen \t und \n heohni PHP Tipps 2006 2 18.04.2006 19:10
unterschied zwischen POST mit session und ohne Crypi PHP Tipps 2006 8 11.01.2006 14:08
unterschied zwischen text mit und ohne kommas? Dilandau PHP Tipps 2007 5 03.12.2005 23:55
Unterschied zwischen get und kein get Matthiasnet PHP Tipps 2005 1 07.03.2005 23:12
Was ist Unterschied zwischen vServer und RootServer? test022 Off-Topic Diskussionen 23 24.01.2005 12:37
kein Unterschied zwischen Groß- und Kleinschreibung PHP Tipps 2004-2 4 06.12.2004 17:28
unterschied zwischen html und xhtml HTML, Usability und Barrierefreiheit 2 25.10.2004 14:32
Unterschied zwischen scp und sftp Stümper Server, Hosting und Workstations 4 14.09.2004 16:17
Unterschied zwischen 'mounted' und local? Stümper PHP Tipps 2004 5 31.08.2004 15:26
Unterschied zwischen Popup und Popdown? Kori Off-Topic Diskussionen 6 29.08.2004 14:38
Unterschied zwischen »AND« und »&&« tapferesschneiderlein PHP Tipps 2004 5 26.08.2004 10:48
Unterschied zwischen <strong> und <b> HTML, Usability und Barrierefreiheit 2 01.08.2004 18:31
Unterschied zwischen require() und include() PHP Tipps 2004 3 24.07.2004 19:09
unterschied zwischen include und require PHP Tipps 2004 5 02.07.2004 15:55

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
popen.de, popoen de, popen de, you popen, popen de., popen, youpopen, popen ohne ende, php sendmail langsam, /usr/sbin/sendmail, popen .de, www.popoen de, /usr/sbin/sendmail sourceforge, unterschied header und body, popen sendmail, php5 sendmail dauert ewig, popen php email, email header ändern sendmail, popen sendmail html, /usr/sbin/sendmail bearbeiten

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:25 Uhr.




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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.