php mail несколько адресов

Php mail несколько адресов

(PHP 4, PHP 5, PHP 7, PHP 8)

mail — Отправляет электронную почту

Описание

Отправляет электронную почту.

Список параметров

Получатель, или получатели письма.

Тема отправляемого письма.

Тема должна соответствовать » RFC 2047.

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

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

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

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

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

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

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

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

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

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

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

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

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

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

Birthday Reminders for August

Источник

mail — Отправляет электронную почту

Описание

Отправляет электронную почту.

Список параметров

Получатель, или получатели письма.

Тема отправляемого письма.

Тема должна соответствовать » RFC 2047.

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

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

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

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

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

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

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

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

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

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

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

Примеры

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

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

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

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

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

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

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

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

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

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

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

Birthday Reminders for August

Источник

Отправка mail() в php

Рассмотрим, как отправить почтовое сообщение с помощью php функции mail(). В данной статье мы создадим максимально «белую» отправку, чтобы ваше письмо не попало в папку «Спам».

Какие мы решим возможные проблемы:

При создании нашего php кода для отправки функции mail() мы учтём моменты выше, чтобы минимизировать процент попадания письма в папку «Спам».

Создание файла mail.php и основных переменных

Создадим в корне сайта файл mail.php и добавим в него следующий код.

Мы создали 4 переменных:

Формирование текстовой версии письма (text/plain) и таблицы для HTML-версии

Таким образом, мы обработали полученные с фронтенда данные формы.

Доработка HTML-версии почтового сообщения

Создание заголовков почтового письма

Сформируем заголовки в виде массива (для PHP >= 7.2).

Формирование итогового сообщения письма

Собираем воедино сообщение, которое будем использовать для отправки 3 параметром функции mail().

На что стоит обратить внимание:

Желательно чтобы заголовки From, Reply-To и Return-Path совпадали.

Отправка mail() в php с проверкой

Все необходимые переменные для заполнения параметров мы подготовили, осталось отправить письмо и в случае ошибки вернуть сообщение об этом.

Итоговый код

В результате наш mail.php должен выглядеть примерно так:

PHP_ORIG_SCRIPT

Для удаления заголовка X-PHP-Originating-Script существует 2 способа
(если знаете ещё, поделитесь в комментариях):

Чтобы не попасть в папку спам мы сделали всё от нас зависящее.
Остальные настройки вам необходимо делать на сервере: SPF, DKIM, DMARC, PTR.

Надеюсь, вам понравилась данная информация. Если вам интересна тема web-разработки, то можете следить за выходом новых статей в Telegram.

Источник

Отсылка от двух до нескольких писем на почту.

В этой статье мы разберем то, как можно отсылать данные с формы на две, а то и больше e-mail адресов.

Довольно часто стал встречаться этот вопрос, что и с подвигло нас написать небольшую статью о том, как это сделать. В ней мы расскажем о двух способах.

Рассмотрим эти способы подробнее.

Способ первый. Общие получатели.

Для того, чтобы отправить данные из формы на два адреса этим способом, вам нужно в качестве первого аргумента функции mail указать эти адреса через запятую.

Возьмем для примера код из нашей статьи «Простая форма связи своими руками».

Всё, что нам нужно сделать, это добавить новое поле в форму, которое будет задавать второй e-mail адрес получателя:

И изменить обработчик:

Стоит обратить внимание на строчку 5, в которой мы получаем второй адрес и строчку 7, где мы формируем список получателей письма (у нас их двое в данном случае).

Результат работы этого скрипта можно посмотреть на демо-странице:

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

Способ второй. Анонимные получатели

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

Как можно понять такой способ не очень предпочтителен, если вам необходимо разослать письма 100 людям или более, так как скорее всего на сервере стоит ограничение на количество вызываемых функций mail в определенный промежуток времени. Поэтому во время рассылок, учитывают это время и делают перерывы, то есть добавляются какие-то таймеры или ещё что-то. В случае если вам нужно отправлять данные с формы, такой вариант не подойдет для большого количества e-mail адресов.

Обработчик для передачи сообщения двум людям будет выглядеть так:

Результат работы этого способа смотрите на демо-странице(отличается от первой):

Источник

Функция mail в php. Отправляем сообщение

Работа с функцией mail в php — отправка сообщений по средствам php-скрипта.

Для отправки электронной почты используется функция mail (), которая имеет следующий вид:

У функции четыре параметра, три из которых являются обязательными: адрес электронной почты получателя сообщения. Если необходимо направить письмо нескольким получателям, то их адреса должны быть перечислены в строке через запятую;

1. тема письма;
2. текст сообщения;
3. дополнительные заголовки сообщения.

Предыдущие параметры позволяют задать только основные свойства письма, но их ведь намного больше.
Дополнительные свойства указываются в последнем параметре и разделяются символами конца строки и перевода каретки (CR и LF).

Пример отправки почты

Все гениальное просто, и в отправке сообщений абсолютно ничего сложного нет.

Если вы создаете систему рассылки новостей, то перед вами может возникнуть одна серьезная проблема: если список большой, то рассылка может занять слишком много времени. Если выполнение сценария не уложится в 30 секунд (это значение установлено в качестве максимума по умолчанию), то его работа будет прервана. На практике оказывается, что при списке рассылки в 1000 записей 30 секунд не хватает, поэтому необходимо увеличить время выполнения сценария.

Изменять конфигурацию интерпретатора в данном случае будет не очень хорошим решением. Если тайм-аут слишком большой, то в системе может оказаться много зациклившихся сценариев, которые будут расходовать процессорное время. Лучшим вариантом будет увеличить тайм-аут для опреде-ленного сценария. Для этого можно воспользоваться функцией set_time_out(), которой передается новое значение тайм-аута в секундах для текущего сценария. Следующий пример устанавливает тайм-аут в 10 минут:

Но слишком большой список рассылки приводит и к еще одной проблеме: рассылка новостей — занятие не из легких, потому что помимо процессорных ресурсов требуются и сетевые. В результате производительность сервера может серьезно упасть. Все ресурсы вряд ли вам удастся израсходовать, ведь ОС Unix и Windows являются многозадачными, то есть могут выполнять несколько задач одновременно, но производительность обработки Web-запросов может упасть.

Если ваш сценарий должен регулярно рассылать электронные почтовые сообщения по большому списку, то можно вынести рассылку на отдельный сервер. В определенный момент времени специально предназначенный сервер для рассылки забирает список пользователей или получает его с помощью запроса к базе данных и непосредственно рассылает сообщения.

Источник

Читайте также:  адрес двфу на острове
Образовательный портал