Birthday Reminders for August

mail

Каждая строка должна быть отделена символом CRLF (\r\n). Строки не должны быть длиннее 70 символов.

(Только для Windows) Если PHP передаёт данные напрямую SMTP-серверу и в начале строки стоит точка, то она будет удалена. Чтобы избежать этого замените все такие точки на две.

Строка или массив, которые будут вставлены в конец отправляемых заголовков письма.

Обычно используется для добавления дополнительных заголовков (From, Cc, and Bcc). Несколько дополнительных заголовков должны быть разделены CRLF (\r\n). Если для составления этого заголовка используются внешние данные, то они должны быть проверены для избежания инъекций нежелательных заголовков.

Если передан массив, то его ключи будут именами заголовка, а значения значениями.

Замечание:

До PHP 5.4.42 и 5.5.27, параметр additional_headers не имел защиты от инъекции. Так что пользователи должны удостовериться, что передаваемые заголовки безопасны и содержат только заголовки. т.е. не содержат несколько переводов строк подряд, что стартует тело сообщения.

Замечание:

При отправке письмо должно содержать заголовок From . Он может быть установлен с помощью параметра additional_headers , или значение по умолчанию может быть установлено в php.ini .

Если заголовок отсутствует, будет сгенерировано сообщение об ошибке вида Warning: mail(): «sendmail_from» not set in php.ini or custom «From:» header missing . Заголовок From также определяет заголовок Return-Path при отправке напрямую через SMTP (только Windows).

Замечание:

Если сообщения не отправляются, попробуйте использовать только LF (\n). Некоторые агенты пересылки сообщений Unix (особенно » qmail) автоматически заменяют LF на CRLF (что приводит к двойному CR, если использовалось CRLF). Используйте эту меру в крайнем случае, так как это нарушает » RFC 2822.

Параметр additional_params может быть использован для передачи дополнительных флагов в виде аргументов командной строки для программы сконфигурированной для отправки писем, указанной директивой sendmail_path . Например, можно установить отправителя письма при использовании sendmail с помощью опции -f .

Параметр автоматически экранируется функцией escapeshellcmd() , чтобы не допустить выполнение команд. Но escapeshellcmd() позволяет добавлять дополнительные параметры. В целях безопасности рекомендуется проверять и очищать этот параметр.

Так как escapeshellcmd() применяется автоматически, то нельзя использовать некоторые символы, допустимые к использованию в email-адресах некоторыми RFC. mail() не допускает такие символы, поэтому в программах, в которых они требуются, рекомендуется использовать альтернативы для их отправки (например фреймворки или библиотеки).

Пользователь, под которым работает веб-сервер должен быть добавлен в список доверенных в конфигурации sendmail для того чтобы избежать добавления заголовка ‘X-Warning’ при указании отправителя с помощью опции (-f). Для пользователей sendmail — это файл /etc/mail/trusted-users .

Возвращаемые значения

Возвращает true , если письмо было принято для передачи, иначе false .

Важно заметить, что то что письмо было принято для передачи вовсе НЕ означает что оно достигло получателя.

Список изменений

Версия Описание
7.2.0 Параметр additional_headers может принимать значения типа массив.

Примеры

Пример #1 Отправка письма.

Использование функции mail() для отправки простого письма:

// Сообщение
$message = «Line 1\r\nLine 2\r\nLine 3» ;

// На случай если какая-то строка письма длиннее 70 символов мы используем wordwrap()
$message = wordwrap ( $message , 70 , «\r\n» );

// Отправляем
mail ( ‘caffeinated@example.com’ , ‘My Subject’ , $message );
?>

Пример #2 Отправка письма с дополнительными заголовками.

Добавление простых заголовков, сообщающих почтовому агенту адреса From и Reply-To:

$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 );
?>

Пример #3 Отправка письма с дополнительными заголовками, переданными массивом

В этом примере посылается то же письмо, что и в примере выше, но дополнительные заголовки задаются массивом (доступно с PHP 7.2.0).

$to = ‘nobody@example.com’ ;
$subject = ‘the subject’ ;
$message = ‘hello’ ;
$headers = array(
‘From’ => ‘webmaster@example.com’ ,
‘Reply-To’ => ‘webmaster@example.com’ ,
‘X-Mailer’ => ‘PHP/’ . phpversion ()
);

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

Пример #4 Отправка письма с дополнительными аргументами командной строки.

Параметр additional_params может быть использован для передачи дополнительных параметров программе, используемой для отправки писем с помощью директивы sendmail_path .

Пример #5 Отправка HTML-сообщения

С помощью функции mail() также можно отправить и HTML-письмо.

// несколько получателей
$to = ‘johny@example.com, sally@example.com’ ; // обратите внимание на запятую

// тема письма
$subject = ‘Birthday Reminders for August’ ;

// текст письма
$message = ‘


Here are the birthdays upcoming in August!

Person Day Month Year
Johny 10th August 1970
Sally 17th August 1973



‘ ;

// Для отправки HTML-письма должен быть установлен заголовок Content-type
$headers = ‘MIME-Version: 1.0’ . «\r\n» ;
$headers .= ‘Content-type: text/html; charset=iso-8859-1’ . «\r\n» ;

// Дополнительные заголовки
$headers [] = ‘To: Mary , Kelly ‘ ;
$headers [] = ‘From: Birthday Reminder ‘ ;
$headers [] = ‘Cc: birthdayarchive@example.com’ ;
$headers [] = ‘Bcc: birthdaycheck@example.com’ ;

// Отправляем
mail ( $to , $subject , $message , implode ( «\r\n» , $headers ));
?>

Замечание:

Для отправки HTML или других комплексных сообщений рекомендуется использовать PEAR-пакет » PEAR::Mail_Mime.

Примечания

Замечание:

Реализация SMTP (только Windows) функции mail() в Windows во многом отличается от реализации в sendmail. Во-первых, она не использует локальную программу для составления писем, а работает непосредственно с сокетами, что означает что необходим почтовый агент ( MTA ), ожидающий соединений на сокете (может быть как на локальном так и на удалённом сервере).

Во-вторых, дополнительные заголовки вроде: From: , Cc: , Bcc: и Date: интерпретируются в первую очередь не, MTA , а PHP.

Поэтому параметр to не должен быть адресом вида «Something «. Команда mail может неправильно интерпретировать этот адрес во время передачи данных MTA.

Замечание:

Не следует использовать функцию mail() для отправки большого количества писем в цикле. Функция открывает и закрывает соединение с SMTP-сервером для каждого письма, что не очень эффективно.

Для отправки большого количества сообщений обратите внимание на пакеты » PEAR::Mail и » PEAR::Mail_Queue.

Смотрите также

Источник

How to send Emails in PHP?

PHP is one of the most popular web-development languages and a popular way to create dynamic web apps. In this article we’re going to help you painlessly configure the mail function in your application. So let us start! There are two basic ways of sending emails with PHP: a built-in mail function and external mail packages. To read the full article, check out Mailtrap’s blog: How to Send Emails in PHP?

PHP built-in mail function ()

  • create simple HTML/text messages without attachments and images
  • send emails via localhost and Xmapp
  • include several recipients with “$to” parameter.

It is suitable for simple, mostly text-based notifications in your local environment. If you need to communicate with your app’s users, it is better to install an external mailer package.

If you are still committed to the PHP built-in mail function() and are ready to accept the challenge, let’s take a look at the basic code and its main parameters.

Syntax and parameters

The PHP mail syntax is pretty simple:

It uses the following parameters:

  • “$to” = your message recipient(s). The email address format may be user@example.com or User user@example.com. In general, it needs to comply with RFC 2822.
  • “$subject” = your message’s subject
  • “$message” = the body of your message. Lines should be separated with a CRLF (\r\n). Each line should not exceed 70 characters.
  • “[$headers]” = additional recipients of your message, which can be included in CC or BCC.

Note that headers are optional, except for the “from” header: it must be specified, otherwise, you will receive an error message like Warning: mail(): “sendmail_from” not set in php.ini or custom “From:” header missing.

You can use additional headers to change the mail “From” address and set the “Reply to” address.

For more details and additional parameters, refer to the PHP documentation.

Sending HTML email using PHP mail() function

The body of the message can be written in HTML. However, as we’ve mentioned above, it should be simple. In the PHP mail function(), the HTML part will look like this:

$message = '    

Here are the cases requiring your review in December:

Case titleCategoryStatusDue date
Case 1DevelopmentpendingDec-20
Case 1DevOpspendingDec-21
';

It’s important to remember that to send HTML mail, you need to set the Content-type header:

$headers[] = ‘MIME-Version: 1.0’;
$headers[] = ‘Content-type: text/html; charset=iso-8859-1’;

Simple Transmission Protocol (SMTP)

Where do I specify the SMTP settings? This is a fair question. Go to the PHP installation folder and configure them in the “php.ini” file. But this will only work for localhost or Xmapp like solutions because as we have already mentioned, PHP mail function does not support SMTP authentication and doesn’t allow sending messages via external servers.

There are some other, rather haphazard options but we won’t promote them here. Alternatively, we recommend using external PHP mail packages for sending emails via an external SMTP server.

PHP mailing packages

As we have already mentioned, the native PHP mail() function has limited functionality when it comes to mass sending. For example, it is not designed for creating engaging email templates that may boost your next campaign or sending a large volume of emails.

But since PHP is still one of the most popular programming languages, it also doesn’t lack resources for sending mass emails. We can highly recommend several plugins, such as Pear Mail and Swift Mailer

Pear Mail is a class that provides multiple interfaces for sending emails (which is stated in their documentation).

Here is what you can do with Pear Mail:

  • create complex HTML/text messages with attachments and inlined images (with Mail_Mime class)
  • send emails via PHP’s built-in mail() function, a sendmail program, or SMTP server
  • send multiple emails from a queue (with Mail_Queue class).

Swift Mailer

Swift Mailer is another popular package for sending emails in PHP. It is feature-rich, well covered by documentation, and pretty straightforward in use.

Here is what you can do with Swift Mailer:

  • create complex HTML/multipart templates
  • add attachments and embed images
  • send emails via authenticated SMTP, sendmail, Postfix, or your own transport
  • use additional plugins.

Besides that, Swift Mailer offers enhanced security and handles large attachments and images with low memory usage.

And finally, PHPMailer, which is the classic and the most popular email sending library for PHP. It deserves a separate article and a tutorial. You will find it here.

Here is what you can do with PHPMailer:

  • create complex HTML/multipart templates
  • add attachments and embedded images
  • send emails via authenticated SMTP.

PHPMailer is protected against header injection attacks and automatically validates emails.

In this article, we have described the basic PHP email sending principles, syntax, and parameters. Moreover, we have reviewed the main ways of sending emails with PHP: its built-in mail function and the most popular external mail packages. PHPMailer and Swift Mailer are standard libraries for PHP email sending today, and PEAR Mail is still widely used.

Choose your option according to your current needs and preferences and test your emails beforehand. For email experiments — create an account at Mailtrap, a fake SMTP server. It imitates a real SMTP server and traps your test email in the virtual inboxes. Have a try!

Check the full Sending emails with PHP article at Mailtrap.io to get more details on email packages and examples!

Источник

Читайте также:  Apps script html css
Оцените статью