php скрипт для отправки почты
PHP скрипты
Apache
PHP Скрипты
Для Дизайна Сайта
Навигация
Партнеры
PHPSendMail
Для использования формы нужно просто внести установки своей почты и все. В целом скрипт готов к использованию и эта форма обратной связи для сайта на HTML с PHP обработчиком, идеально подойдет для небольших сайтов, сайтов визиток.
Simple PHP Send Mail
С этим очень ЛЁГКИМ php скриптом, посетители вашего сайта смогут отправлять письма непосредственно вам на почту через форму обратной связи.
PHP + AJAX скрипт отправки форм на E-mail
Универсальный скрипт отправки данных из форм на email. Скрипт идеально подойдет для сайтов типа Landing Page, сайтов визиток и т.д.
PHP Mailer Final с капчей
Скрипт выводит форму и, при заполнении необходимых полей, отправляет на Ваш e-mail сообщение. В скрипт встроена защита от роботов: перед отправкой письма надо ввести капчу.
GentleSource Form Mail
На ваш выбор две опции: или пользователь при помощи редиректа попадает на Thank-You-Page с вашим текстом или же, пользователю отображается информация, о том, что сообщение успешно отправлено.
Micro Mailer
Micro Mailer – это не большой PHP скрипт, который позволяет вам и посетителям вашего сайта отправить письмо любому адресату.
Web4you-FM
Light PHP Contact Form
DodosMail
DodosMail – это простой в установке PHP скрипт, который позволяет отправлять письма через форму обратной связи, на вашем сайте. Вам просто нужно загрузить php файл.
PHP Contact Form
Скрипт PHP Contact Form включает в себя следующие функции: 1) функция предотвращения спама. Пользователь должен ввести защитный код, также известный как капча.
TPCS Contact (email form)
Этот TPCS Contact скрипт, позволит вашим посетителям связаться с вами через форму обратной связи. Вся информация будет отправлена вам на электронную почту.
Feedback mailer
Feedback mailer перенаправляет всю информацию из формы обратной связи на вашем сайте, напрямую к вам на почту. Этот маленький скрипт очень быстро обрабатывает все запросы.
Easy PHP Contact Form
Простой, но безопасный PHP скрипт контакта с вебмастером при помощи формы обратной связи с проверкой кода (КАПЧА) для предотвращения спама.
PHP Contact form (with image verification)
Контактная форма, которая предотвращает спам, спрашивая пользователя ввести защитный код с картинки. Если вы используете совсем простую форму обратной связи, рано или поздно спаммеры найдут способ посылать вам рекламу в автоматическом режиме.
CW3 Form Mail
Скрипт очень легко установить и настроить под внешний вид вашего сайта. Вы можете изменить размер формы обратной связи и текст сообщения, которое выводиться при успешной отправки письма.
reCAPTCHA Contact Form
phMailer
phMailer – это очень простой PHP скрипт обратной связи, который поддерживает функцию прикрепления файла (attachments) благодаря встроенной mail() function языка PHP.
Php скрипт для отправки почты
(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
Отправка e-mail в PHP
Обычно я пишу вступление о том, почему данная тема так важна для изучения. Но не в этот раз, потому что здесь, уверен, ни у одного человека не возникнет вопрос: «Зачем отправлять e-mail в PHP?». Поэтому предлагаю сразу приступить к делу и узнать об этом более подробно, тем более, что проще реализации отправки e-mail через PHP и придумать нельзя, так что поймут даже те, кто не знаком с PHP вообще.
Для начала давайте с Вами разберёмся немного с теорией. Скучно, но поверьте важно. Для отправки e-mail необходим SMTP-сервер. На большинстве платных хостингах он обязательно имеется. Однако, если такой возможности нет (допустим, хостинг бесплатный или очень дешёвый), то тогда можно воспользоваться сторонним SMTP-сервером (например, mail.ru). То есть главное: для отправки необходим SMTP-сервер.
Как видите, всё интуитивно понятно: кому отправлять, какая тема и само сообщение. Если Вы используете пакет Denwer, то после запуска скрипта, Вы сможете найти файл в директории «tmp/!sendmail«, в котором и содержатся данные Вашего письма. Открыть эти файлы можно либо в блокноте, но лучше открыть их в какой-нибудь почтовой программе (например, The Bat или Microsoft Outlook).
Я не даром написал вперемешку русский и английский текст, чтобы проверить кодировку. Очень часто она распознаётся неправильно, и в результате, пользователи видят «абракадабру«. Чтобы этого избежать необходимо задать кодировку. И как раз для кодировки, а также для других особых параметров и существует четвёртый аргумент функции mail():
Также сообщения можно отправлять в HTML-формате. Для этого достаточно всего лишь заменить «text/plain» на «text/html«. И Вы сможете в сообщении использовать HTML-теги. Только не забывайте, что всякие теги, наподобие: «
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 20 ):
А как сделать автоматическое сообщение вот такие сообщения например это «вместо_этого_текста_приклепленный_фаил Вот файл который вы заказали с вместо_этого_текста_название_сайта. Если вы не заказывали данный файл просто игнорируйте это сообщение.» или «вместо_этого_текста_имя_пользователя на ваш комментарий ответили!»?
Для этого надо делать шаблон письма, например, такой: «%user% на Ваш комментарий ответили». Затем через PHP перед отправкой надо заменить с помощью функции str_replace %user% на конкретное имя пользователя.
Спасибо, но вопрос был как сделать письмо чтобы автоматический приходило всем зарегистрированным, или каким-то особенным пользователям, или вообще просто любым.
Это надо сделать в цикле. Если же пользователей много, то здесь всё гораздо сложнее, так как сервер может не выдержать. Для отправки письма большому количеству пользователей нужно запускать скрипт много раз, каждый раз отправляя небольшие партии. Например, при первом запуске отправить 20 писем. При втором ещё 20, при третьем ещё 20 и так далее, пока не будут отправлены все письма. Интервал надо делать хотя бы 30 секунд.
Да, письмо дойдёт до всех трёх ящиков. Однако, минус данного способа: каждый из получателей увидит адреса других получателей. Сделать уведомление автоматическим элементарно. Например, при добавлении нового сообщения на форум, надо вызвать функцию mail(). Тогда сразу же придёт уведомление.
Спасибо, а как сделать каждый из получателей не видел адрес других получателей? Или можете сказать как Вы делали такие уведомления?
Надо через цикл (например, for) по очереди вызывать функцию mail, каждый раз отправляя одному получателю.
Михаил, очень нужна ваша помощь. на моём тестовом хостинге не работает функция «mail», но там можно через сторонний SMTP сервер. Расскажите как им пользоваться,и как его настроить. Прошу расскажите мне или напишите статью. Оооочень надо
Проверьте можно ли на хостинге прямо указать сторонний SMTP, чтобы функция mail на него отправляла. Либо поищите скрипты, которые будут сами отправлять почту в обход стандартной функции.
извините за нелепый вопрос: а как на этот скрипт попадает пользователь? ведь РНР «сидит» и работает на сервере. и можно ли каким то образом РНР-скрипты вставлять в HTML страницы.
Пользователь к нему обращается, отправляя запрос. В HTML-страницах нельзя использовать PHP, но в PHP-коде можно использовать HTML.
PHP mail под Windows
В этой статье я хочу рассказать об отправке почты из php скриптов под Windows.
Америку я, конечно, не открою, но надеюсь, что кому-то эта статья будет полезна или просто сэкономит время.
Sendmail, в свою очередь, для отправки почты использует SMTP сервер.
Таким образом, чтобы php скрипт мог отправлять почту нужно установить и настроить sendmail и SMTP сервер.
Версию sendmail для Windows можно скачать здесь.
Установка и настройка выполняется в три этапа.
1) Распаковываем архив на тот же диск, где установлен php. Например, я создал папку C:\wamp\sendmail.
2) Вносим изменения в файл php.ini:
Как видите, нужно только указать путь к sendmail чтобы php мог ее найти.
3) Настраиваем sendmail. Все настройки находятся в файле sendmail.ini (расположен в папке с sendmail).
Но перед тем как приступать к настройке пару слов об SMTP сервере. Вам совсем не обязательно устанавливать сервер на вашем компьютере. Многие почтовые сервисы предоставляют бесплатный доступ к своим серверам.
Ниже я покажу пример настройки sendmail для работы с SMTP сервером mail.ru, но, естественно, вы выбрать любой другой.
Итак, открываем sendmail.ini и устанавливаем следующие параметры:
smtp_server=smtp.mail.ru ; адрес SMTP сервера
smtp_port=25 ; порт SMTP сервера
default_domain=mail.ru ; домен по-умолчанию
error_logfile=error.log ; файл в который будет записываться лог ошибок
debug_logfile=debug.log ; очень полезная на этапе отладки опция. Протоколируются все операции, которые выполняет sendmail
auth_username=account_name@mail.ru ; имя вашего аккаунта
auth_password=account_password ; ваш пароль
; следующие три опции используются если перед авторизацией на SMTP сервере требуется авторизация на POP3 сервере
pop3_server=pop.mail.ru
pop3_username=account_name@mail.ru
pop3_password=account_password
; параметр для команды MAIL FROM
force_sender=account_name@mail.ru
Теперь не забудьте перезапустить web сервер, чтобы изменения вступили в силу.
Чтобы протестировать работу почты напишем простенький скрипт:
Он создает форму с тремя полями для ввода адреса, темы и содержания письма. Нажатие на кнопку «Отправить» отправит запрос этому же скрипту (строка 21).
Если данные введены, то будет вызвана функция mail (строка 13), которая и отправит письмо. В случае успешной отправки функция возвращает true, в противном случае — false.
Как видите, ничего сложного в настойке почты нет.
Отправка электронных писем с помощью библиотеки PHPMailer языка PHP
Функционала mail() достаточно для выполнения большинства стандартных задач, связанных с отправкой электронных писем, но зачастую она не обеспечивает требуемую гибкость.
Для работы mail() требуется сконфигурированный локальный сервер, в то время как PHPMailer поддерживает протокол SMTP, который могут использовать аутентифицированные пользователи.
Рассмотрим ещё несколько преимуществ использования PHPMailer:
К слову, PHPMailer используют многие CMS, созданные на языке PHP: например, WordPress, Joomla! и Drupal.
Установка библиотеки PHPMailer
Для установки PHPMailer можно использовать менеджер пакетов (композер), выполнив следующую команду:
composer require phpmailer/phpmailer
Отправка электронных писем с локального сервера с помощью PHPMailer
Ниже представлен простой код для отправки электронного письма с локального сервера через библиотеку PHPMailer:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//From email address and name
$mail->From = «from@yourdomain.com»;
$mail->FromName = «Full Name»;
//To address and name
$mail->addAddress(«recepient1@example.com», «Recepient Name»);
$mail->addAddress(«recepient1@example.com»); //Recipient name is optional
//Address to which recipient will reply
$mail->addReplyTo(«reply@yourdomain.com», «Reply»);
//CC and BCC
$mail->addCC(«cc@example.com»);
$mail->addBCC(«bcc@example.com»);
//Send HTML or Plain Text email
$mail->isHTML(true);
$mail->Subject = «Subject Text»;
$mail->Body = «Mail body in HTML«;
$mail->AltBody = «This is the plain text version of the email content»;
Представленный код с комментариями наглядно демонстрирует все действия, которые нужно выполнить для отправки письма.
Отправка письма с вложениями
В приведённом ниже коде показано, как отправить письмо с вложениями с помощью PHPMailer:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer;
$mail->From = «from@yourdomain.com»;
$mail->FromName = «Full Name»;
$mail->addAddress(«recipient1@example.com», «Recipient Name»);
//Provide file path and name of the attachments
$mail->addAttachment(«file.txt», «File.txt»);
$mail->addAttachment(«images/profile.png»); //Filename is optional
$mail->Subject = «Subject Text»;
$mail->Body = «Mail body in HTML«;
$mail->AltBody = «This is the plain text version of the email content»;
Чтобы прикрепить файлы к письму, необходимо вызвать метод addAttachment объекта PHPMailer, который в качестве аргумента принимает строку с адресом файла. Для прикрепления нескольких файлов нужно вызвать этот метод соответствующее число раз.
Устранение проблем в коде
В зависимости от типа системы, наиболее распространенной ошибкой при использовании встроенной функции mail() в фоновом режиме является следующая:
Mailer Error: Could not instantiate mail function.
Если нужно получить больше сведений о возникшей ошибке, можно добавить следующий код в блок catch<> :
Как правило, ошибки использования функции mail() связаны с тем, что почтовый сервер не был сконфигурирован. В этом случае функция error_get_last вернёт следующее:
Array (
⠀⠀⠀⠀ [type] => 2
⠀⠀⠀⠀ [message] => mail(): Failed to connect to mailserver at «localhost» port 25, verify your «SMTP» and «smtp_port» setting in php.ini or use ini_set()
⠀⠀⠀⠀ [file] => OUR_PATH \vendor\phpmailer\phpmailer\src\PHPMailer.php
⠀⠀⠀⠀ [line] => 863
`)
Чтобы избежать этой весьма распространённой проблемы, рекомендуется использовать протокол SMTP.
Отображение сообщений об ошибках на требуемом языке
В папку language также можно добавить любой другой язык из 43 доступных.
Использование протокола SMTP
Для отправки электронных писем можно использовать почтовый сервер другого хоста, но сперва необходимо пройти аутентификацию. То есть для отправки писем через почтовый сервер Gmail необходимо иметь учётную запись в этом сервисе.
SMTP – протокол запроса на отправку электронного письма, используемый почтовыми клиентами. После того, как почтовый сервер проверит электронное письмо, он отправит его на указанный почтовый сервер.
Ниже приведен пример отправки письма через почтовый сервер Gmail с клиентского домена. Поскольку мы используем SMTP-протокол, локальный почтовый сервер не требуется:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer(true);
//Enable SMTP debugging.
$mail->SMTPDebug = 3;
//Set PHPMailer to use SMTP.
$mail->isSMTP();
//Set SMTP host name
$mail->Host = «smtp.gmail.com»;
//Set this to true if SMTP host requires authentication to send email
$mail->SMTPAuth = true;
//Provide username and password
$mail->Username = «name@gmail.com»;
$mail->Password = «super_secret_password»;
//If SMTP requires TLS encryption then set it
$mail->SMTPSecure = «tls»;
//Set TCP port to connect to
$mail->Port = 587;
$mail->From = «name@gmail.com»;
$mail->FromName = «Full Name»;
$mail->addAddress(«name@example.com», «Recepient Name»);
$mail->Subject = «Subject Text»;
$mail->Body = «Mail body in HTML«;
$mail->AltBody = «This is the plain text version of the email content»;
Сервер Gmail использует TSL-шифрование поверх SMTP, поэтому в коде было установлено соответствующее значение для свойства объекта PHPMailer. Перед отправкой по протоколу SMTP необходимо указать имя хоста, номер порта, тип шифрования и пройти аутентификацию, а также предоставить имя пользователя и пароль. Если в Gmail была включена функция двухфакторной аутентификации, доступ к SMTP через имя пользователя и пароль будет закрыт. Для получения доступа необходимо внести дополнительные настройки.
Извлечение писем через протокол POP3
Библиотека PHPMailer поддерживает отправку писем по методу аутентификации POP перед SMTP. Иначе говоря, вы сможете пройти аутентификацию через POP и отправлять почту через SMTP. К сожалению, в PHPMailer реализована только возможность отправки электронных писем, поэтому получать почту по протоколу POP3 с использованием библиотеки не получится.
Заключение
Если вы являетесь PHP-разработчиком, вы будете часто сталкиваться с необходимостью программной отправки электронных писем. Конечно, можно использовать сторонние сервисы (Mandrill или SendGrid) или написать свою собственную библиотеку, но лучшим инструментом для решения этой задачи пока по-прежнему остаётся PHPMailer.