Forum und email

mail

(PHP 4, PHP 5)

mail — Αποστολή mail

Περιγραφή

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

Η mail() αυτομάτα στέλνει με mail το μήνυμα όπως ορίζεται στο message στον παραλήπτη όπως ορίζεται στο to . Πολλαπλοί παραλήπτες μπορούν να οριστούν με την προσθήκη ενός κόμματος ανάμεσα σε κάθε διεύθυνση στο to . Email με συννημένα αρχεία και ειδικούς τύπους περιεχομένου μπορούν να αποσταλούν με την χρήση αυτής της συνάρτησης. Αυτό πραγματοποιείται μέσω MIME-κωδικοποίησης - για περισσότερες πληροφορίες, δείτε αυτό: » το άρθρο Zend ή τις» PEAR Mime Classes.

Τα παρακάτω RFC's μπορούν επισής να βοηθήσουν: » RFC 1896, » RFC 2045, » RFC 2046, » RFC 2047, » RFC 2048, and » RFC 2049.

Η mail() επιστρέφει TRUE εάν το mail παραδόθηκε επιτυχώς, FALSE σε αντίθετη περίπτωση.

Warning

Η εγκατάσταση στα Windows της mail() διαφέρει ποικιλοτρόπως από την αντίστοιχη στο UNIX. Καταρχήν, δεν χρησιμοποιεί ένα τοπικό binary αρχείο για να συνθέτει μηνύματα αλλά μόνο ενεργεί σε direct sockets που σημαίνει ότι ένα MTA απαιτείται που θα "ακούει" σε ένα network socket (το οποίο μπορεί να είναι είτε στο localhost -τοπικά- είτε στο απομακρυσμένο μηχάνημα). Έπειτα, τα custom headers όπως From:, Cc:, Bcc: και Date: δεν ερμηνεύονται από το MTA στην αρχή, αλλά αναλύονται από την PHP. Η PHP < 4.3 υποστήριζε μόνο το στοιχείο header Cc: (και ήταν case-sensitive). Η PHP >= 4.3 υποστηρίζει όλα τα προαναφερθέντα στοιχεία header και δεν είναι πλέον case-sensitive.

Example#1 Στέλνοντας mail.

<?php
mail("[email protected]", "My Subject", "Line 1\nLine 2\nLine 3");
?>

Εάν περαστεί ένα fourth string argument, αυτό το string εισάγεται στο τέλος του header. Αυτό χρησιμοποιείται κυρίως για να προστεθούν επιπλέον headers. Πολλαπλοί επιπλέον headers χωρίζονται με ένα return (enter) και μια νέα γραμμή.

Note: Πρέπει να χρησιμοποιείτε το \r\n για να χωρίζετε τα headers, αν και κάποιοι Unix mail transfer agents ενδέχεται να δουλεύουν μόνο με μιά νέα γραμμή (\n).

Example#2 Στέλνοντας mail με επιπλέον headers.

<?php
mail("[email protected]", "the subject", $message,
     "From: webmaster@{$_SERVER['SERVER_NAME']}\r\n"
    ."Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n"
    ."X-Mailer: PHP/" . phpversion());
?>

Η παράμετρος additional_parameters μπορεί να χρησιμοποιηθεί για να περαστεί μια επιπρόσθετη παράμετρος στο πρόγραμμα, το οποίο έχει ρυθμιστεί να χρησιμοποιεί όταν στέλνεται mail με χρήση της sendmail_path ρύθμισης. Για παράδειγμα, αυτό μπορεί να χρησιμοποιηθεί για να ορίσει την διεύθυνση του αποστολέα όταν γίνεται χρήση του sendmail με την επιλογή -f. Ίσως χρειαστεί να προσθέσετε τον χρήστη, που ο web server σας χρησιμοποιεί σύμφωνα με τις ρυθμίσεις του sendmail, για να αποτρέψετε να προστεθεί στο μήνυμα ένα 'X-Warning' header όταν ορίζετε τον αποστολέα με αυτή τη μέθοδο.

Example#3 Στέλνοντας mail με επιπλέον headers και ορίζοντας μια επιπρόσθετη command line παράμετρο.

<?php
mail("[email protected]", "the subject", $message,
     "From: webmaster@{$_SERVER['SERVER_NAME']}", "-fwebmaster@{$_SERVER['SERVER_NAME']}");
?>

Note: Αυτή η πέμπτη παράμετρος προστέθηκε στην PHP 4.0.5. Από την PHP 4.2.3 αυτή η παράμετρος είναι απενεργοποιημένη στο safe_mode και η συνάρτηση mail() θα εμφανίσει ένα μήνυμα προηδοποιήσης και θα επιστρέψει FALSE εάν προσπαθείτε να την χρησιμοποιήσετε.

Μπορείτε επίσης να χρησιμοποιήσετε απλές τεχνικές string building για να δημιουργήσετε πολύπλοκα μηνύματα email.

Example#4 Στέλνοντας πολύπλοκα email.

<?php
/* recipients */
$to  = "Mary <[email protected]>" . ", " ; // note the comma
$to .= "Kelly <[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, you can set the Content-type header. */
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

/* additional headers */
$headers .= "From: Birthday Reminder <[email protected]>\r\n";

$headers .= "Cc: [email protected]\r\n";
$headers .= "Bcc: [email protected]\r\n";

/* and now mail it */
mail($to, $subject, $message, $headers);
?>

Note: Φροντίστε να μην έχετε τίποτα newline χαρακτήρες στο to ή subject , διαφορετικά το mail ίσως να μην σταλεί σωστά.

Note: Η to παράμετρος δεν μπορεί να είναι μια διεύθυνση της μορφής "Something <[email protected]>". Η εντολή mail δεν θα το αναλύσει σωστά κατά την επικοινωνία με το MTA.

Δείτε επίσης imap_mail().