phpbar.de logo

Mailinglisten-Archive

[php] mail(additional_headers) und length

[php] mail(additional_headers) und length

Ulf Wendel ulf_(at)_redsys.de
Wed, 12 Jan 2000 00:29:40 +0000


André Laugks wrote:

> Ok, jetzt kann ich mit additional_headers was anfangen.
> 
> Dann kann ich ja die Emailadresse des Absenders mit übergeben, cool.

Dies und vieles mehr.

Eine elektronische Mail besteht wie ein echter Brief aus einem
Breifumschlag und einem Inhalt. Anders als im realen Leben liefern wir
jedoch nur den Inhalt bei der Post ab. Der Inhalt besteht stets aus zwei
Teilen. Einem Formular u.a. mit der Absenderadresse ("header") und der
eigentlichen Nachricht ("body"). In der Post werden die Teile in einen
Briefumschlag ("envelope") gesteckt. Der Postbeamte schreibt eine
Zieladresse und zwischendurch einige Notizen auf den Umschlag und gibt
ihn weiter. 

Die bekannteste und verbreiteste Postbeamtengewerkschaft, auch MTA (Mail
transfer agent) genannt, heißt sendmail und wohnt bei
http://www.sendmail.org .

Da es furchtbar langweilig und fehleranfällig ist Formulare auszufüllen
und Programmierer faul sind, haben die Entwickler von PHP eine Funktion
namens mail() geschrieben. Bei typischen Aufgaben übernimmt mail() die
Erzeugung des (minimalen, notwendigen) Headers und leitet die Daten an
sendmail weiter.

In einigen Fällen ist es jedoch wünschenswert noch weitere
Formularfelder auszufüllen. Einen Eindruck davon, wieviele es gibt
bekommst Du, wenn Du deinen Mailclient anweist alle Header anzuzeigen
(Netscape: View->Header->All / Anzeigen->Kopfzeilen->Alle ). Welche es
wirklich gibt erfährst Du u.a. in der RFC 822,
http://www.sendmail.org/rfc/0822.html. 

+++ generelle Form +++

Beim setzen eines Headerelements muß eine formale Form stets eingehalten
werden. Sie lautet im einfachsten Fall: "Feldname:Feldinhalt\n". Die
Schreibweise von Feldname sollte unerheblich sein, Doppelpunkt und
Newline (\n) sind Pflicht. Vorsicht, dies ist eine beliebte
Fehlerquelle.

+++ From +++

Kai hat schon eines der häufigsten Feldnamen benannt: mail( $to_addr,
$subject, $body, "From: ulf_(at)_redsys.de (Kommentar: Ulf Wendel)\n") .
Falls die sendmail Konfiguration auf der Maschine auf der PHP läuft das
Setzen dieses Headers erlaubt, wird die Absenderadresse überschrieben.
Diese Einschränkung gilt auch für alle anderen Header.

+++ Reply-To +++

Überschreibt die Reply-To Adresse. 

+++ X-Mailer +++

Auch bereits von Kai benannt: mail ( $to_addr, $subject, $body,
"X-Mailer: PHP3.0.13\n" ). Tendenziell ein Gimmick.

+++ cc +++

Sendet eine Kopie zur Kenntnisnahme an die angegebene Adresse (wie ein
weiteres "To:" im Netscape): mail ($to_addr, $subject, $body, "From:
info_(at)_pc-info.de\ncc: ulf_(at)_redsys.de\n" );
Bei dieser Mail sehe ich als Empfänger, das eine Kopie an Kai ging.
Anders als bei "bcc".

+++ bcc +++

Sendet eine Kopie der Mail ohne die übrigen bcc's in der jeweiligen
Kopie aufzuführen. Das setzen von bcc's ist der beste Weg, um mit PHP
eine Mail an diverse Empfänger zu senden. Folgender Code ist sehr
ineffektiv, weil fünf sendmail Aufrufe erfolgen. Fünf mal wird ein neuer
Prozeß gestartet.

$adressen = array ("ulf_(at)_redsys", "uw_(at)_netuse.de", "kai_(at)_pc-infos.de",
"webmaster_(at)_pc-infos", "Andre.Laugks_(at)_netcologne.de" );
reset($adressen);
while (list(, $adr)=each($adressen)) 
  _(at)_mail ($adr, $subject, $body );

Stattdessen sollte man einen Header mit vielen bcc's erzeugen und nur
einmal mail() (und damit sendmail) aufrufen.

+++ Fehler +++

... sind garantiert im obigen Code, weil ich kein Handbuchman bin ;-).
Weitere Infos finden sich in den einschlägigen Archiven. In den
Scriptsammlungen sollten sich Klassen zur Erstellung der Header finden
lassen.

> length ist eine variable Länge.
> 
> var telefon = new Array(123456, 4578945, 479566, 145789);
> 
> for(var i = 0; i < telefon.length, i++)
> {
>   document.writeln(telefon[i] + "<br>");
> }

Wenn ich mich recht entsinne ist die JavaScript Eigenschaft bei etlichen
Objekten verschiedenen Typs vorhanden. Kai hat bereits völlig korrekt
das Pendant für den Typ Array genannt: count().

+++ Arrays +++

Anzahl der Elemente in der ersten Dimension:
http://www.php.net/manual/function.count.php3

Redewendung zur Anzeige eines Arrays:
reset($daten);
while (list($k, $v)=each($daten))
 echo "$k => $v<br>\n";

+++ Strings +++

http://www.php.net/manual/function.strlen.php3

Ulf


php::bar PHP Wiki   -   Listenarchive