(PHP 4, PHP 5)
mail — Изпраща ел. поща
Изпраща ел. поща.
Получателят или получателите на писмото.
Форматирането на низа трябва да бъде съгласно » RFC 2822. Ето някои примери:
Тема на писмото.
Темата трябва да удовлетворява » RFC 2047.
Съобщението, което трябва да се изпрати.
Всеки ред трябва да бъде отделен с LF (\n). Редовете не трябва да надвишават 70 знака.
(Само за Windows) Ако PHP открие точка в началото на някой от редовете, когато се обръща директно към SMTP сървър, тя ще бъде премахната. За да предотвратите това, заменете откритите такива места с две точки.
<?php
$text = str_replace("\n.", "\n..", $text);
?>
Низ, който ще бъде поставен в края на заглавките на писмото.
Това обикновено се използва за добавяне на допълнителни заглавки (From, Cc, и Bcc). Заглавките трябва да се разделят чрез CRLF (\r\n).
Забележка: При изпращане на ел. поща, писмото трябва да съдържа заглавка From. Тя може да се установи чрез параметъра additional_headers или по подразбиране от php.ini.
При неуспех ще се генерира съобщение за грешка, от рода на: Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. Под Windows, заглавката From установява и Return-Path.
Забележка: Ако съобщенията не се получат, пробвайте да използвате само LF (\n). Някои нискокачествени програми за изпращане на ел. поща под Unix автоматично заместват LF с CRLF (което води до дублиране на CR, ако CRLF се е използвало). Това трябва да се използва в краен случай, защото не е съгласно » RFC 2822.
Параметърът additional_parameters може да се използва за подаване на допълнителни параметри към програмата, която използвате за изпращане на ел. поща, чрез настройката sendmail_path. Например, това може да се използва, за да установите адреса на изпращача на писмото, когато използвате sendmail в режим -f.
Потребителят, който стартира уеб сървъра трябва да бъде добавен като надежден в настройките на sendmail, за да се предпазите от прибавяне на заглавка 'X-Warning' към писмото, когато изпращачът му (-f) е установен по този начин. За потребителите на sendmail, файлът е /etc/mail/trusted-users.
Връща TRUE, ако писмото е прието за доставка успешно. Иначе връща FALSE.
Забележете, че това, че писмото е прието успешно за доставка, НЕ означава, че наистина ще достигне очакваната дестинация.
Версия | Описание |
---|---|
4.3.0 (Само за Windows) | Стартира поддръжката на всички обикновени заглавки (като From, Cc, Bcc и Date) и те не са чувствителни към регистъра. След като обикновените заглавки не се интерпретират от MTA в първия случай, но се обработват от PHP, PHP < 4.3 поддържа само Cc елемента, а той е чувствителен към регистъра). |
4.2.3 | Параметърът additional_parameters е забранен в safe_mode и когато се използва, функцията mail() ще изведе предупредително съобщение и ще върне FALSE. |
4.0.5 | Добавен е параметърът additional_parameters . |
Example #1 Изпращане на ел. поща.
Употреба на mail() за изпращане на елементарно писмо:
<?php
// Съобщението
$message = "Line 1\nLine 2\nLine 3";
// В случай, че някой от редовете надвишава 70 знака, трябва да използваме wordwrap()
$message = wordwrap($message, 70);
// Изпращаме
mail('caffinated@example.com', 'My Subject', $message);
?>
Example #2 Изпращане на ел. поща с допълнителни заглавки.
Допълнение от собствени заглавки, информиращо MUA за адресите на From и Reply-To:
<?php
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
Example #3 Изпращане на ел. поща с допълнителен параметър от командния ред.
Параметърът additional_parameters може да се използва за подаване на допълнителни параметри към програмата, настроена да се използва за изпращане на ел. поща, използвайки sendmail_path.
<?php
mail('nobody@example.com', 'the subject', 'the message', null,
'-fwebmaster@example.com');
?>
Example #4 Изпращане на HTML форматирана ел. поща
Чрез функцията mail() също е възможно и изпращането на HTML ел. поща.
<?php
// много получатели
$to = 'aidan@example.com' . ', '; // забележете на запетайката
$to .= 'wez@example.com';
// тема
$subject = 'Birthday Reminders for August';
// съобщение
$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>
';
// За изпращането на HTML ел. поща, трябва да бъде установена заглавката Content-type
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Допълнителни заглавки
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
// Изпращаме
mail($to, $subject, $message, $headers);
?>
Забележка: Ако възнамерявате да изпращате HTML или други сложни писма, се препоръчва употребата на PEAR пакета » PEAR::Mail_Mime.
Забележка: Изпълнението на функцията mail() под Windows се различава в много отношения от това под Unix. Първо, не се използва локален изпълним файл за съставянето на съобщенията, а се работи с директни сокети, което означава че MTA трябва да прослуша мрежов сокет (който може да бъде на локалната машина или на отдалечена такава).
Второ, собствените заглавки From:, Cc:, Bcc: и Date: не се интепретират от MTA в първия случай, но се обработват от PHP.
В допълнение, параметърът to не трябва да бъде във формат "Something <someone@example.com>". При комуникация с MTA, командата за ел. поща може да не го обработи правилно.
Забележка: Чрез функцията могат също да се изпращат и писма, съдържащи прикрепени файлове и специални типове съдържание (например HTML). Това се осъществава чрез MIME кодиране - за повече информация, прегледайте » Статията на Zend или » PEAR Mime класовете.
Забележка: Забележете, че функцията mail() не е подходяща за голям обем от писма, в цикъл. Тя отваря и затваря SMTP сокет за всяко писмо, което не е много елегантно.
За изпращане на големи количества ел. поща, прегледайте пакетите » PEAR::Mail и » PEAR::Mail_Queue.
Забележка: Следните RFC стандарти може да са ви от ползва: » RFC 1896, » RFC 2045, » RFC 2046, » RFC 2047, » RFC 2048, » RFC 2049 и » RFC 2822.