Forum und email

mail

(PHP 4, PHP 5)

mail — Afsend email

Beskrivelse

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

Sender en email.

Parameterliste

to

Modtager eller modtagerne af mailen

Denne streng skal overholde » RFC 2822. Et par eksempler::

subject

Emnet på mailen der skal sendes.

Caution

Dette må ikke indeholde nogle linjeskift, da mailen måske ikke bliver leveret korrekt.

message

Beskeden som skal sendes.

Alle linjer bør blive delt med en LF (\n). Linjerne bør ikke være længere end 70 tegn.

Caution

(Kun windows) Når PHP snakker direkte med en SMTP server og et fuldt stop er fundet på starten af en linje, vil den blive fjernet. For at undgå dette, kan sådanne linjer udskriftes med to punktommer.

<?php
$text 
str_replace("\n.""\n.."$text);
?>

additional_headers (optional)

Tekst som vil blive indsat til sidst i brevhovedet på emailen.

Dette bliver typisk brugt til at tilføje flere linjer til brevhovedet, som f.eks. From, Cc og Bcc). Hvis der er flere ekstra linjer, skal de deles med CRLF (\r\n).

Note: Mailen skal indeholde en From i brevhovedet. Dette kan sættes i additional_headers eller en standardværdi direkte i php.ini.
Hvis dette ikke bliver gjort, vil det resultere i en fejl som kunne ligne dette: Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing.

Note: Hvis beskeden ikke bliver modtaget, prøv så kun at benytte LF (\n). Nogle dårlige Unix mailservere udskifter LF med CRLF automatisk, hvilket bliver til dobbelt CR hvis CRLF er brugt. Dette skal være den sidste udvej, da metoden ikke overholder » RFC 2822 standarden.

additional_parameters (optional)

Den sidste parameter, additional_parameters , kan bruges til at angive indstillinger direkte til det program som er konfigureret ved sendmail_path, som bruges til at sende mail. Det kunne f.eks. være 'envelope sender address', som bruges til at angive mailserverens svaradresse, og kan beskrives ved at bruge -f som sendmail parameter.

Den bruger som webserveren kører under, bør tilføjes til listen over betroede brugere i sendmail konfiguration for at undgå en 'X-Warning' i brevhovedet, når 'envelope sender' (-f) bliver brugt i denne funktion. Til dem som bruger sendmail, hedder filen /etc/mail/trusted-users.

Returneringsværdier

Returnere TRUE, hvis mailen blev accepteret af modtagerserveren og ellers FALSE.

Det er vigtigt at bemærke, at selvom mailen blev accepteret af serveren, er det IKKE sikkert at mailen bliver leveret til den tilsigtet destination.

ChangeLog

Version Beskrivelse
4.3.0 (Kun Windows) Alle brugerdefineret brevhoveder (som From, Cc, Bcc og Date) er alle tilgængelige og ser ikke forskelligt på store og små bogstaver. (Da brugerdefineret brevhoveder ikke bliver behandlet af MTA i første omgang, men bliver først gennemgået af PHP. PHP < 4.3 tillader kun Cc og ser forskel på store og små bogstaver.)
4.2.3 Parameteren additional_parameters er slået fra i safe_mode og funktionen mail() vil komme med en advarsel besked (warning) og returner FALSE hvis den bliver brugt.
4.0.5 Parameteren additional_parameters blev tilføjet.

Eksempler

Example#1 Afsende mail.

Brug af mail() til at sende en simpel mail:

<?php
// Beskeden
$message "Line 1\nLine 2\nLine 3";

// I tilfældet at vores linjer er længere end 70 tegn, bør wordwrap() benyttes
$message wordwrap($message70);

// Send
mail('[email protected]''My Subject'$message);
?>

Example#2 Afsende mail med brugerdefineret brevhoved.

Ved tilføjning af nogle elementære indstillinger, kan vi fortælle MUA omkring fra (From) og svar-til (Reply-To) adresserne:

<?php
$to      
'[email protected]';
$subject 'the subject';
$message 'hello';
$headers 'From: [email protected]"\r\n" .
    
'Reply-To: [email protected]"\r\n" .
    
'X-Mailer: PHP/' phpversion();

mail($to$subject$message$headers);
?>

Example#3 Afsending af mail med ekstra kommandolinje parameter.

Parameteren additional_parameters kan blive brugt til at overføre ekstra værdier til det program, der igennem sendmail_path er sat til at sende mails for PHP.

<?php
mail
('[email protected]''the subject''the message'null,
   
'[email protected]');
?>

Example#4 Afsending af en HTML mail

Det er også muligt at afsende en mail i HTML-format med mail().

<?php
// multiple recipients
$to  '[email protected]', '// note the comma
$to .= '[email protected]';

// subject
$subject 'Birthday Reminders for August';

// message
$message '
<html>
<head>
  <title>Birthday Reminders for August</title>
</head>
<body>
  <p>Here are the birthdays upcoming in August!</p>
  <table>
    <tr>
      <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
    </tr>
    <tr>
      <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
    </tr>
    <tr>
      <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
    </tr>
  </table>
</body>
</html>
'
;

// To send HTML mail, the Content-type header must be set
$headers  'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";

// Additional headers
$headers .= 'To: Mary <[email protected]>, Kelly <[email protected]>' "\r\n";
$headers .= 'From: Birthday Reminder <[email protected]>' "\r\n";
$headers .= 'Cc: [email protected]"\r\n";
$headers .= 'Bcc: [email protected]"\r\n";

// Mail it
mail($to$subject$message$headers);
?>

Note: Hvis det påtænkes at sende HTML eller andre former for komplekse email, anbefales det at bruge PEAR package » PEAR::Mail.

Notes

Note: Windows implementeringen af mail() er på mange måder forskellig fra Unix versionen. For det første, bruger den ikke et lokalt program til udsending af mail, men åbner en forbindelse direkte til en MTA, som entet er lokal eller på en ekstern maskine.
For det andet, brugerdefineret brevhoveder som From:, Cc:, Bcc: og Date: er ikke overført direkte til MTA, men først læst igennem af PHP.
Lige som at to parameteren ikke skal være en adresse i formatet "Something <[email protected]>". Mailprogrammet vil muligvis ikke behandler det korrekt, når det snakker med MTA.

Note: Email med vedhæftede filer og specielle typer af indhold (f.eks. HTML), kan blive sendt ved brug af denne funktion. Dette gøres ved hjælp af MIME-encoding - læs mere omkring det her » Zend article og her » PEAR Mime Classes.

Note: Det skal også lige bemærkes at funktionen mail() ikke er beregning til at sende store mængder af email i en løkke. Denne funktion åbner og lukker en forbindelse til en SMTP-server ved hver mail, hvilket ikke er særlig effektivt.
For at sende store mænger af emails, se mere her » PEAR::Mail og her » PEAR::Mail_Queue.

Note: De følgende RFC kan være meget brugbare: » RFC 1896, » RFC 2045, » RFC 2046, » RFC 2047, » RFC 2048, » RFC 2049 og » RFC 2822.