Php функция mail: Функция mail PHP – ленивый способ отправки почты
Содержание
php — функция php mail () на локальном хосте
Потратив 2 дня на эту проблему с php mail, я понял это и помог бы вам сделать то же самое. Это потратило достаточно времени, Давайте начнем …
В PHP есть встроенная функция php mail, которую можно использовать для отправки почты из скрипта, но эта функция каким-то образом ограничена, поскольку она не может подключить вас к серверу простого протокола передачи почты (SMTP). Я предполагаю, что вы используете WAML/XAMPP, на самом деле не пробовал XAMPP, но вы можете понять это следующим образом:
Сначала нам нужно найти способ подключения нашего веб-сервера (wamp) к внешнему SMTP. В этом случае мы будем использовать Gmail, но перед этим нам нужно загрузить/установить инструмент, который будет извлекать нашу электронную почту из сценария php и отправлять ее в SMTP Gmail.
sendmail.Zip
.C:\wamp\
извлеките его как папку, что означает, что его содержимое должно находиться в папке с именем sendmail и может находиться в C:\wamp\sendmail
.sendmail.ini
и откройте как администратор, так как мы собираемся изменить его содержимое.изменить следующие строки
[sendmail]
smtp_server=smtp.gmail.com
smtp_port= 465
smtp_ssl=ssl
default_domain=localhost
error_logfile=error.log
debug_logfile=debug.log
auth_username= enter your gmail account here
auth_password= enter the password for that account here
;pop3_server=
;pop3_username=
;pop3_password=
;force_sender=
;force_recipient=
hostname= localhost
Пожалуйста, будьте осторожны и делайте, как вы видите выше. Я удалил большую часть нежелательного содержимого из моего файла sendmail.ini
, чтобы его было легче читать.
Сохранить файл
Перейдите в папку wamp
и перейдите к bin\Apache\apache[version here]\bin\php.ini
и измените файл php как администратор следующим образом:
Если вы используете блокнот, вы можете использовать поиск на вкладке редактирования или ctrl+F и введите «почтовая функция» , чтобы быстро перейти к части почтовой функции в файле php.ini
.
[mail function]
;For Win32 only.
;http://php.net/smtp
;SMTP = localhost
;http://php.net/smtp-port
;smtp_port = 25
;For Win32 only.
;http://php.net/sendmail-from
;sendmail_from =
;For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;http://php.net/sendmail-path
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t -i" ----> this is the changed part.
Примечание. Только sendmail_path
нужно изменить на вышеуказанный. Оставьте другие настройки такими, какими вы их видите. Ваш путь может отличаться в зависимости от того, куда вы распаковали папку sendmail.
Сохраните этот php.ini
файл
Вернитесь к C:\wamp\bin
и выберите php\php[version here]\php.ini
и отредактируйте путь sendmail, как вы делали выше, и сохраните файл как администратор/или перед открытием откройте как администратор, щелкнув правой кнопкой мыши
Запустите wampserver от имени администратора и, когда он станет зеленым, включите следующее:
Щелкните левой кнопкой мыши по зеленому значку и перейдите к php -> php extensions -> php_sockets (нажмите, чтобы черный флажок на нем)
подождите, пока значок снова не станет зелёным, и следуйте инструкциям выше, чтобы включить php_openssl.
Если значок становится зеленым, то пора включить apaches ssl_module, перейдя в Apache icom, когда вы нажмете на зеленый значок сервера вампиров. Вы можете найти это в модулях Apache.
Когда вы закончите с тремя шагами выше, выйдите и снова запустите wampserver как администратор, чтобы внести изменения.
Вернитесь в извлеченную папку sendmail и щелкните правой кнопкой мыши на sendmail.exe
Перейдите в его свойства -> Совместимость -> Изменить настройки для всех пользователей -> Режим совместимости [смените на Windows XP (пакет обновления 3)] -> Запустите эту программу от имени администратора [отметьте эту опцию].
Сохранить и применить.
Мы должны были сделать это так, чтобы каждый раз, когда мы вызывали приложение sendmail, оно запускалось от имени администратора.
Теперь нам нужно настроить нашу учетную запись gmail для работы с этим приложением sendmail. Войдите в учетную запись Gmail и в правом верхнем углу нажмите на шестерню, чтобы выбрать настройки. В настройках перейдите на вкладку «Пересылка» и «POP/IMAP» и включите IMAP. Сохранить изменения
Наконец, вернитесь в папку «Входящие». В верхнем правом углу рядом с адресом электронной почты находится небольшая стрелка, указывающая вниз, нажмите на нее, чтобы выбрать «Моя учетная запись». Если у вас его нет, вы можете попробовать щелкнуть по изображению своего профиля, чтобы выбрать «Мой аккаунт».
Нажмите на вкладку «Вход и безопасность» и прокрутите вниз до нижней части страницы. Вы найдете Разрешить менее безопасные приложения: и включите его. В основном это было бы выключено.
Это все, что вам нужно сделать, чтобы вы могли теперь отправлять электронную почту из ваших php-скриптов на localhost. Теперь вы можете попробовать свою функцию mail()
с 4 минимальными параметрами и посмотреть. Надеюсь это поможет. Проголосуйте, если это поможет, поэтому я смогу опубликовать более интересные решения.
Не удалось вызвать функцию mail — Раздел помощи
Oшибка «Не удалось вызвать функцию mail» может появиться в случае, если данная функция отключена со стороны сервера либо выполнена некорректная настройка скриптов сайта.
В случае ошибки в скриптах необходимо обратиться к техническим специалистам, осуществляющим администрирование сайта.
Причиной же отключения со стороны сервера может послужить превышение лимитов по отправке почтовых сообщений с сайтов, также данная функция отключена для аккаунтов, находящихся на тестовом периоде — в этом случае включение sendmail происходит автоматически при поступлении денежных средств на баланс аккаунта.
Действия при приостановке функции sendmail
При превышении лимита отправки сообщений с сайтов, на административный email аккаунта направляется уведомление.
Если превышение лимита sendmail произошло вследствие того, что в настройках программы для рассылки сообщений было указано большее количество возможных отправок в час, чем предусмотрено установленным лимитом, либо адреса, на которые происходила отправка, не являлись валидными, следует произвести проверку адресной базы или скорректировать настройки программы согласно установленному лимиту.
В случае, если аккаунт был заражён и рассылка осуществлялась внедрёнными в файлы сайтов вредоносными программами, по получении такого письма в первую очередь необходимо:
- Включить логи посещений (access_log) в панели управления в разделе «Log файлы».
- Проверить аккаунт на наличие вредоносных программ с тем, чтобы по окончании работ удалить вставки вредоносного кода и сторонние файлы с аккаунта.
- Зафиксировать время редактирования подозрительных и повреждённых файлов или их появления на аккаунте с помощью команды stat по SSH.
- В случае повторения ситуации и появления на аккаунте новых вредоносных программ рекомендуется произвести анализ с помощью команды stat и логов посещений (access_log) на предмет запросов, произошедших во время загрузки или изменения найденных файлов.
Пример использования команды stat:
Причины, по которым на аккаунте могли появиться вредоносные скрипты для рассылок нежелательных сообщений, а также рекомендации для решения вопроса приведены на странице.
После того, как работы по очистке сайтов от вредоносного содержимого будут завершены и приняты основные меры защиты аккаунта в соответствии с нашими рекомендациями (либо произведена перенастройка почтовых программ, посредством которых производилась рассылка), для включения sendmail необходимо ответить на полученное от нас уведомление, указав в ответе список принятых мер.
Отправка почты заблокирована, как разблокировать | REG.RU
Важно: в бесплатный тестовый период хостинга можно отправлять только 10 писем в сутки. В противном случае отправка почты будет заблокирована.
В некоторых случаях почта блокируется из-за заражения сайта. Чтобы восстановить работу сайта используйте инструкцию: Что делать, если сайт заражен?
Если вы получили уведомление о наличии вредоносного ПО на вашем хостинге и у вас заблокирована отправка почты, для разблокировки выполните следующие действия:
- 1.
Проверьте ваш сайт на наличие вирусов и удалите найденное вредоносное ПО по инструкции: Как проверить сайт на вирусы?
Если антивирусная проверка показала заражение в установленных плагинах/темах/шаблонах CMS — обновите используемую CMS до последней стабильной версии, а также все подключенные расширения и плагины. Рекомендуем использовать только официальные расширения CMS.
На данном шаге вы также можете восстановить сайт из резервной копии: Бэкапы Максимальный срок хранения резервных копий — 30 дней.
- 2.
Если у вас виртуальный хостинг, разблокируйте отправку почты по инструкции ниже:
если хостинг заказан в REG.RU
Авторизуйтесь на сайте REG.RU и перейдите к списку услуг.
Кликните по названию услуги хостинга. В информационном блоке нажмите кнопку Что это, и как снять блокировку:
- На открывшейся странице нажмите Снять блокировку:
Внимание: снятие блокировки доступно 1 раз в 48 часов.
Готово. Обновите страницу браузера.
если хостинг заказан у партнёра REG.RU
Чтобы снять блокировку почты, удалите из файла php.ini следующую строку: disable_functions= mail. Для этого используйте инструкцию: Как изменить параметры PHP?
Важно: информация о блокировке почты в Личном кабинете REG.RU обновляется раз в сутки. Сразу после удаления disable_functions= mail уведомление не пропадёт, однако работоспособность почты будет восстановлена.
При блокировке почты на VPS-сервере обратитесь в техническую поддержку хостинга.
Разблокировка почты через файл mail.log
Также вы можете устранить проблему с помощью файла mail.log. В этом файле логируются сообщения, посылаемые PHP-скриптами. Чаще всего нежелательные письма рассылаются PHP-скриптами через функцию php-mail. Для снятия блокировки откройте файл mail.log в панели управления.
Файл mail.log находится:
- ISPmanager: Менеджер файлов–mail.log;
- Parallels Plesk: Корневая папка — logs — mail.log;
- cPanel: Диспетчер файлов — logs — mail.log.
Проверьте список скриптов и удалите спам-скрипты. Важно: не удаляйте из панели управления сам файл mail.log, этот файл является журналом и хранит информацию об отправке писем скриптами средствами phpmail.
Если файла mail.log не существует, вы можете настроить логирование сообщений самостоятельно по инструкции: Как включить лог сообщений phpmail?
Если вы столкнулись с ошибкой Sender rate overlimit следуйте нашим рекомендациям в статье: Ошибка Sender rate overlimit.
Помогла ли вам статья?
272
раза уже
помогла
Отправка писем через SMTP на PHP
<?php
$config[‘smtp_username’] = ‘[email protected]’; //Смените на адрес своего почтового ящика.
$config[‘smtp_port’] = ‘465’; // Порт работы.
$config[‘smtp_host’] = ‘ssl://smtp.yandex.ru’; //сервер для отправки почты
$config[‘smtp_password’] = ‘пароль’; //Измените пароль
$config[‘smtp_debug’] = true; //Если Вы хотите видеть сообщения ошибок, укажите true вместо false
$config[‘smtp_charset’] = ‘utf-8’; //кодировка сообщений. (windows-1251 или utf-8, итд)
$config[‘smtp_from’] = ‘МегаСервис’; //Ваше имя — или имя Вашего сайта. Будет показывать при прочтении в поле «От кого»
function smtpmail($to=», $mail_to, $subject, $message, $headers=») {
global $config;
$SEND = «Date: «.date(«D, d M Y H:i:s») . » UT\r\n»;
$SEND .= ‘Subject: =?’.$config[‘smtp_charset’].’?B?’.base64_encode($subject).»=?=\r\n»;
if ($headers) $SEND .= $headers.»\r\n\r\n»;
else
{
$SEND .= «Reply-To: «.$config[‘smtp_username’].»\r\n»;
$SEND .= «To: \»=?».$config[‘smtp_charset’].»?B?».base64_encode($to).»=?=\» <$mail_to>\r\n»;
$SEND .= «MIME-Version: 1.0\r\n»;
$SEND .= «Content-Type: text/html; charset=\»».$config[‘smtp_charset’].»\»\r\n»;
$SEND .= «Content-Transfer-Encoding: 8bit\r\n»;
$SEND .= «From: \»=?».$config[‘smtp_charset’].»?B?».base64_encode($config[‘smtp_from’]).»=?=\» <«.$config[‘smtp_username’].»>\r\n»;
$SEND .= «X-Priority: 3\r\n\r\n»;
}
$SEND .= $message.»\r\n»;
if( !$socket = fsockopen($config[‘smtp_host’], $config[‘smtp_port’], $errno, $errstr, 30) ) {
if ($config[‘smtp_debug’]) echo $errno.»<br>».$errstr;
return false;
}
if (!server_parse($socket, «220», __LINE__)) return false;
fputs($socket, «HELO » . $config[‘smtp_host’] . «\r\n»);
if (!server_parse($socket, «250», __LINE__)) {
if ($config[‘smtp_debug’]) echo ‘<p>Не могу отправить HELO!</p>’;
fclose($socket);
return false;
}
fputs($socket, «AUTH LOGIN\r\n»);
if (!server_parse($socket, «334», __LINE__)) {
if ($config[‘smtp_debug’]) echo ‘<p>Не могу найти ответ на запрос авторизаци.</p>’;
fclose($socket);
return false;
}
fputs($socket, base64_encode($config[‘smtp_username’]) . «\r\n»);
if (!server_parse($socket, «334», __LINE__)) {
if ($config[‘smtp_debug’]) echo ‘<p>Логин авторизации не был принят сервером!</p>’;
fclose($socket);
return false;
}
fputs($socket, base64_encode($config[‘smtp_password’]) . «\r\n»);
if (!server_parse($socket, «235», __LINE__)) {
if ($config[‘smtp_debug’]) echo ‘<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>’;
fclose($socket);
return false;
}
fputs($socket, «MAIL FROM: <«.$config[‘smtp_username’].»>\r\n»);
if (!server_parse($socket, «250», __LINE__)) {
if ($config[‘smtp_debug’]) echo ‘<p>Не могу отправить комманду MAIL FROM: </p>’;
fclose($socket);
return false;
}
fputs($socket, «RCPT TO: <» . $mail_to . «>\r\n»);
if (!server_parse($socket, «250», __LINE__)) {
if ($config[‘smtp_debug’]) echo ‘<p>Не могу отправить комманду RCPT TO: </p>’;
fclose($socket);
return false;
}
fputs($socket, «DATA\r\n»);
if (!server_parse($socket, «354», __LINE__)) {
if ($config[‘smtp_debug’]) echo ‘<p>Не могу отправить комманду DATA</p>’;
fclose($socket);
return false;
}
fputs($socket, $SEND.»\r\n.\r\n»);
if (!server_parse($socket, «250», __LINE__)) {
if ($config[‘smtp_debug’]) echo ‘<p>Не смог отправить тело письма. Письмо не было отправленно!</p>’;
fclose($socket);
return false;
}
fputs($socket, «QUIT\r\n»);
fclose($socket);
return TRUE;
}
function server_parse($socket, $response, $line = __LINE__) {
global $config;
while (@substr($server_response, 3, 1) != ‘ ‘) {
if (!($server_response = fgets($socket, 256))) {
if ($config[‘smtp_debug’]) echo «<p>Проблемы с отправкой почты!</p>$response<br>$line<br>»;
return false;
}
}
if (!(substr($server_response, 0, 3) == $response)) {
if ($config[‘smtp_debug’]) echo «<p>Проблемы с отправкой почты!</p>$response<br>$line<br>»;
return false;
}
return true;
}
?>
Вызовите функцию mail () в ch04_wamp + PHP
Каталог статей
При использовании функции mail () в процессе изучения ch04 я столкнулся со следующими проблемами: Напоминаем, что файл php.ini необходимо настроить для использования функции mail () для отправки почты.
Установить sendmail
Как упоминалось выше, wamp не может использовать функцию mail () отдельно, поэтому необходимо установить sendmail.
официальный сайт sendmail
Для простоты использования я распаковываю сжатый пакет sendmail в папку Wamp (D: \ Study \ Wamp \ Sendmail)
Настроить php.ini
Путь к файлу: D: \ Study \ Wamp \ bin \ apache \ apache2.4.41 \ bin \ php.ini
Обязательно выберите файл php.ini в папке apache.Я начал выбирать файл php.ini под php, который после модификации не работает.
Откройте файл для редактирования в виде Блокнота.
В файле php.ini есть четыре места, которые необходимо изменить. Нажмите CTRL + F для поиска ключевого слова mail, найдите [mail function] и измените его.
[mail function]
SMTP = smtp.qq.com
smtp_port = 25
sendmail_from [email protected]
sendmail_path ="D:\Study\Wamp\Sendmail\sendmail.exe -t"
Меры предосторожности:
1. Я использую здесь почтовый ящик QQ. Я могу выбрать собственный почтовый ящик в соответствии со своими потребностями и изменить промежуточные параметры. Например, почтовый ящик 163: smtp.163.com
2. sendmail_path — путь к хранилищу sendmail
3. sendmail_from — это учетная запись, которую ваш сервер вызывает для отправки почты.
Запустите службу SMTP
После включения службы SMTP в учетной записи [email protected], выбранной на предыдущем шаге, ваш сервер может вызывать вашу учетную запись для отправки почты.
1. Войдите в свою учетную запись электронной почты (возьмите почтовый ящик QQ в качестве примера здесь)
2. Настройки -> Учетная запись -> Сервис POP3 / IMAP / SMTP / Exchange / CardDAV / CalDAV.
3. Выберите службу IMAP / SMTP и нажмите «Открыть».
Отправьте SMS согласно подсказкам, нажмите «Я отправил», после подтверждения будет возвращен код авторизации вашего почтового ящика, скопируйте его и используйте в конфигурации sendmail.ini
Настроить sendmail.ini
Путь к файлу: D: \ Study \ Wamp \ Sendmail
Откройте файл для редактирования в виде Блокнота.
smtp_server=smtp.qq.com
smtp_port=25
smtp_ssl=auto
error_logfile=error.log
debug_logfile=debug.log
auth_username='[email protected]'
auth_password = Код авторизации
[email protected]
Меры предосторожности:
1. Измените сервер так же, как в файле php.ini: smtp.qq.com
2. Журнал ошибок, имя изменять не нужно, точку с запятой впереди убрать. (Точка с запятой означает комментарий)
3. auth_username и force_sender одинаковы, оба являются вашей учетной записью электронной почты, и заполните ту же учетную запись, что и в файле конфигурации php.ini! ! !
4. auth_password — это код авторизации, скопированный в сервисе SMTP! ! ! (Не пароль учетной записи электронной почты)
тест
После завершения вышеуказанных операций перезапустите WAMP перед тестированием.
<?php
$flag = mail('[email protected]','TEST','test the mail() function');
if($flag){
echo "Письмо успешно отправлено";
}else{
echo "Не удалось отправить почту";
}
?>
1. Используйте функцию mail () в приведенном выше файле кода. Три параметра функции mail (): первый параметр — это учетная запись для получения почты, второй параметр — заголовок письма, а третий параметр — это содержимое письма. Функция также имеет несколько параметров, которые можно добавить самостоятельно в соответствии с вашими потребностями. Поскольку она используется только для тестирования, используются только основные параметры.
2. Нажмите F5 для отладки скрипта.
3. Откройте почтовый ящик, который принимает почту, и получите почту.
Таким образом, настройка завершена, и теперь вы можете использовать функцию mail () в php (● ’◡’ ●)
Отправка e-mail в русской кодировке средствами PHP
Стандартная функция отправки почты в PHP не заботится о кодировке письма, а специальные классы отправки писем могут показаться слишком тяжеловесным решением. В настоящей статье приведена простая функция, которая позволяет отправлять MIME-совместимые письма на русском языке в виде простого текста или в формате HTML.
Тело письма может быть текстом в любой кодировке. Немного сложнее дело обстоит с составляющими заголовка письма (Subject, From, To), они по стандарту должны быть в US-ASCII. Использование в заголовках кодированного текста регламентируется стандартом RFC-2047. Стандарт задает две возможные формы кодирования — BASE64 и Quoted-Printable. BASE64 более универсальна и работает в том числе для кодировки UTF-8, поэтому мы выбрали именно эту форму. MIME-совместимый почтовый клиент обязан уметь читать обе формы.
Далее код функции, который достаточно схематичен:
<?php
function send_mime_mail($name_from, // имя отправителя
$email_from, // email отправителя
$name_to, // имя получателя
$email_to, // email получателя
$data_charset, // кодировка переданных данных
$send_charset, // кодировка письма
$subject, // тема письма
$body, // текст письма
$html = FALSE, // письмо в виде html или обычного текста
$reply_to = FALSE
) {
$to = mime_header_encode($name_to, $data_charset, $send_charset)
. ‘ <‘ . $email_to . ‘>’;
$subject = mime_header_encode($subject, $data_charset, $send_charset);
$from = mime_header_encode($name_from, $data_charset, $send_charset)
.’ <‘ . $email_from . ‘>’;
if($data_charset != $send_charset) {
$body = iconv($data_charset, $send_charset, $body);
}
$headers = «From: $from\r\n»;
$type = ($html) ? ‘html’ : ‘plain’;
$headers .= «Content-type: text/$type; charset=$send_charset\r\n»;
$headers .= «Mime-Version: 1.0\r\n»;
if ($reply_to) {
$headers .= «Reply-To: $reply_to»;
}
return mail($to, $subject, $body, $headers);
}
function mime_header_encode($str, $data_charset, $send_charset) {
if($data_charset != $send_charset) {
$str = iconv($data_charset, $send_charset, $str);
}
return ‘=?’ . $send_charset . ‘?B?’ . base64_encode($str) . ‘?=’;
}
?>
Мы определили собственную функцию mime_header_encode() для преобразования каждого заголовка в MIME-совместимый формат, несмотря на то, что в PHP предусмотрена аналогичная функция mb_encode_mimeheader(). От встроенной функции нам пришлось отказаться, так как на нашем сервере (PHP 5.1.6) она работает некорректно (возвращает неверный результат).
Использование описанной функции достаточно простое, см. пример ниже. В случае, если кодировка отправки письма отличается от текущей кодировки данных, используется iconv() для преобразования кодировки.
<?php
send_mime_mail(‘Автор письма’,
‘[email protected]’,
‘Получатель письма’,
‘[email protected]’,
‘CP1251’, // кодировка, в которой находятся передаваемые строки
‘KOI8-R’, // кодировка, в которой будет отправлено письмо
‘Письмо-уведомление’,
«Здравствуйте, я Ваша программа!»);
?>
© Все права на данную статью принадлежат порталу webew.ru.
Перепечатка в интернет-изданиях разрешается только с указанием автора
и прямой ссылки на оригинальную статью. Перепечатка в печатных
изданиях допускается только с разрешения редакции.
PHP: imap_mail — Руководство
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_mail — Отправить сообщение электронной почты
Описание
imap_mail (
строка от $ до
,
строка $ subject
,
строка $ message
,
? Строка $ additional_headers
= null
,
? String $ cc
= null
,
? Строка $ bcc
= null
,
? Строка $ return_path
= null
): bool
Параметры от до
, куб.см
и bcc
все строки и все анализируются
как »списки адресов RFC822.
Параметры
- С
по
Получатель
-
предмет
Тема письма
-
сообщение
Тело письма, см. Imap_mail_compose ()
-
additional_headers
В виде строки с дополнительными заголовками для установки в почте
-
куб.см
-
бкк
Приемники, указанные в
bcc
, получат
mail, но исключаются из заголовков.-
return_path
Используйте этот параметр, чтобы указать путь возврата при ошибке доставки почты.
Это полезно при использовании PHP в качестве почтового клиента для нескольких пользователей.
Возвращаемые значения
Возвращает true
в случае успеха или false
в случае неудачи.
История изменений
Версия | Описание |
---|---|
8.0,0 | additional_headers , куб.см , bcc и return_path теперь допускают значение NULL. |
Почтовых функций PHP
Введение в PHP Mail
Функция mail () позволяет отправлять электронные письма прямо из скрипта.
Требования
Для того, чтобы почтовые функции были доступны, PHP требует установленного и работающего
электронная почта.Используемая программа определяется
настройки конфигурации в файле php.ini.
Установка
Почтовые функции являются частью ядра PHP. Нет установки
необходимо использовать эти функции.
Конфигурация среды выполнения
На поведение почтовых функций влияют настройки в php.ini:
Имя | По умолчанию | Описание | Сменный |
---|---|---|---|
мейл.add_x_header | «0» | Добавьте X-PHP-Originating-Script, который будет включать UID сценария, за которым следует имя файла. Для PHP 5.3.0 и выше | PHP_INI_PERDIR |
mail.log | ПУСТО | Путь к файлу журнала, в котором будут регистрироваться все вызовы mail (). Журнал включает полный путь к сценарию, номер строки, адрес и заголовки. Для PHP 5.3.0 и выше | PHP_INI_PERDIR |
SMTP | «localhost» | Только для Windows: DNS-имя или IP-адрес SMTP-сервера | PHP_INI_ALL |
smtp_port | «25» | Только для Windows: номер порта SMTP.Для PHP 4.3.0 и выше | PHP_INI_ALL |
sendmail_from | ПУСТО | Только для Windows: указывает адрес «от», который будет использоваться при отправке почты из mail () | PHP_INI_ALL |
sendmail_path | «/ usr / sbin / sendmail -t -i» | Указывает, где можно найти программу sendmail. Эта директива работает также под Windows. Если установлено, SMTP, smtp_port и sendmail_from игнорируются | PHP_INI_SYSTEM |
Почтовые функции PHP
Функция | Описание |
---|---|
ezmlm_hash () | Вычисляет значение хеш-функции, необходимое для EZMLM |
почта () | Позволяет отправлять электронные письма прямо из скрипта |
Как проверить и исправить функцию php mail ()
Функция php mail () позволяет отправлять электронные письма прямо с php
сценарий.
Из этого туториала Вы узнаете, как проверить, правильно ли работает php mail.
Протестируйте почту php () на вашем веб-сервере
1. Создайте тестовый файл php с помощью текстового редактора и сохраните его.
например как test.php:
PHP
$ sender = ‘[email protected]’;
$ recipient = ‘[email protected]’;
$ subject = «проверка почты на php»;
$ message = «тестовое сообщение php»;
$ заголовки
= ‘От:’.$ отправитель;
if (почта ($ получатель, $ тема, $ сообщение, $ заголовки))
{
echo «Сообщение принято»;
}
еще
{
echo «Ошибка: сообщение не принято»;
}
?>
2. Изменить $ отправителя и $ получателя
в коде.
3. Загрузите php-файл на свой веб-сервер.
4. Откройте загруженный файл php в своем браузере на
выполнить скрипт php .
5. Выходные данные показывают либо «Сообщение принято», либо «Ошибка:
Сообщение не принято ».
chevron_right Сообщение принято:
Откройте свой почтовый клиент, чтобы узнать, было ли сообщение доставлено по указанному
Адрес электронной почты.
(также проверьте папку со спамом!)
Если сообщение было доставлено:
- Все нормально — php mail работает.
Если сообщение не было доставлено:
- Некоторые провайдеры не допускают внешних получателей при использовании почты php.Измените получателя ($ recipient) в коде на локального получателя.
Это означает использование адреса электронной почты из домена сервера, например
если домен вашего сервера www.yourdomain.tld, то адрес электронной почты получателя
должно быть [email protected]. - Загрузите измененный файл php и повторите попытку.
- Если он по-прежнему не работает: измените отправителя ($ sender) на местного
электронная почта (используйте тот же адрес электронной почты, что и для получателя). - Загрузите измененный файл php и повторите попытку.
- Обратитесь к своему провайдеру, если он по-прежнему не работает.
Сообщите своему провайдеру
что стандартная функция php «mail ()» возвращает ИСТИНА, но не почта.
быть отправленным.
Рекомендуется включить используемый тестовый скрипт php в
покажите провайдеру, что проблема не в скрипте php
использовал.
chevron_right Ошибка: сообщение не принято
Почта php может быть отключена:
- Войдите в конфигурацию своего веб-сервера и проверьте настройки php.
Некоторые установки php требуют, чтобы вы установили отправителя по умолчанию в
Сначала конфигурация php.
Некоторые провайдеры не разрешают внешним получателям при использовании php
почта:
- Измените получателя ($ recipient) в коде на локального получателя.
Это означает использование адреса электронной почты из домена сервера, например
если домен вашего сервера www.yourdomain.tld, то адрес электронной почты получателя
должно быть кто-то @ yourdomain.tld. - Загрузите измененный файл php и повторите попытку.
- Если он по-прежнему не работает: измените отправителя ($ sender) на местного
электронная почта (используйте тот же адрес электронной почты, что и для получателя). - Загрузите измененный файл php и повторите попытку.
Если вы проверили настройки php, попробовали локального получателя
и он все еще не работает:
- Свяжитесь со своим провайдером, если вы не можете включить php mail ().
Сообщите своему провайдеру, что стандартная функция php mail () возвращает FALSE.
Рекомендуется включить используемый тестовый скрипт php, чтобы показать вашего провайдера,
что проблема не вызвана используемым скриптом php.
Отказ от ответственности: информация на этой странице предоставляется «как есть» без каких-либо гарантий.
Кроме того, Arclab Software не гарантирует и не делает никаких заявлений.
относительно использования или результатов использования с точки зрения правильности, точности, надежности, актуальности или иным образом.См .: Лицензионное соглашение
Использование функции mail () в PHP на Ubuntu — Linux Hint
Функция mail () — это встроенная функция PHP, которая используется для отправки электронной почты с локального хоста. Но для отправки электронной почты с помощью этой функции требуются некоторые настройки. Для настройки конфигурации вам потребуется реальная информация о почтовом сервере. Вы можете использовать информацию о почтовом сервере вашего активного хостинг-сервера или любую информацию о бесплатном почтовом сервере. Учетная запись Gmail и информация о SMTP-сервере Gmail используются в этом руководстве для отправки электронной почты с помощью функции mail ().
Настройка конфигурации
Для настройки конфигурации потребуются два файла: файл php.ini и еще один файл, который необходимо настроить для настройки почтового сервера. Следуйте инструкциям ниже, чтобы настроить конфигурацию. На PHP доступно множество пакетов для отправки электронной почты. msmtp — это клиент почтового сервера PHP, который используется в этом руководстве для отправки электронной почты с помощью функции PHP mail ().
Шаги :
Выполните следующую команду, чтобы установить пакет msmtp в Ubuntu для настройки почтового сервера:
$ sudo apt-get install msmtp
Создайте файл конфигурации с именем / etc / msmtprc с помощью следующей команды:
Добавьте в файл следующее содержимое.Добавьте действительный адрес электронной почты для пользователя и действительный пароль для пароля , который будет использоваться для отправки электронной почты. Установите адрес электронной почты отправителя для формы значение.
по умолчанию
tls на
tls_starttls на
tls_trust_file /etc/ssl/certs/ca-certificates.crt
учетная запись по умолчанию
хост smtp.gmail.com
порт 587
9 auth имя пользователя gmail2. com
пароль user_password
от sender_email_address
Выполните следующие команды, чтобы установить владельца и разрешения для файла / etc / msmtprc :
$ sudo chown fahmida / etc / msmtprc
$ sudo chmod 0600 / etc / msmtprc
Откройте файл php.ini и измените следующее содержимое со следующими значениями:
SMTP = smtp.gmail.com
smtp_port = 587
sendmail_path = «/ usr / bin / msmtp -t -i»
Синтаксис :
bool mail (строка $ to, строка $ subject, строка $ message [, смешанные $ additional_headers [, string $ additional_parameters]])
Эта функция может принимать четыре аргумента. Первый аргумент принимает адрес электронной почты получателя. Второй аргумент берет тему письма.Третий аргумент принимает тело письма. Последний аргумент является необязательным и содержит дополнительную информацию об электронном письме в виде строки или массива.
Отправка электронной почты с помощью функции mail ()
В этом разделе руководства показаны различные примеры отправки электронной почты с помощью функции PHP mail ().
Пример 1. Отправка простого текстового сообщения электронной почты
В этом примере показано, как можно отправить простое текстовое электронное письмо с помощью функции mail (). Создайте файл PHP со следующим скриптом.
Вы должны установить действительный адрес электронной почты для переменной от $ до , чтобы получить вывод следующего скрипта. В качестве тела сообщения устанавливается простой текст.
php
// Установите адрес электронной почты получателя
$ равным = «[электронная почта защищена]»;
// Задайте тему электронного письма
$ subject = «Это тестовое электронное письмо»;
// Установить тело письма
$ message = «Тестирует тело письма»;
// Установите информацию заголовка
$ headers = «От: [электронная почта защищена] \ r \ n»;
$ заголовков.= «Ответить: [электронная почта защищена] \ r \ n»;
// Отправить электронное письмо с помощью функции message mail ()
if (mail ($ to, $ subject, $ message, $ headers))
{
echo «Электронное письмо успешно отправлено. \ R \ n»;
}
else {
echo «Электронная почта не отправлена.
«;
}
?>
Следующий вывод появится после запуска сценария с веб-сервера, если функция mail () работает правильно.
Следующие выходные данные появятся, если вы отметите почтовый ящик адреса электронной почты, который был установлен в качестве адреса электронной почты получателя.
Пример 2. Отправьте электронное письмо в формате HTML
В этом примере показано, как электронное письмо в формате HTML может быть отправлено с помощью функции mail (). Создайте файл PHP со следующим скриптом.
$ message Переменная инициализируется содержимым HTML, которое будет отправлено как тело сообщения электронной почты. В переменной заголовка $ указано, что содержимое электронного письма является HTML.
php
// Установите адрес электронной почты получателя
$ равным = «[электронная почта защищена]»;
// Задайте тему электронного письма
$ subject = ‘Регистрация прошла успешно’;
// Установите тело письма
$ message = ‘
Ваша регистрация успешно завершена.
имя пользователя = fahmida20
пароль = aswQ34ghqw
‘;
// Установить возврат каретки
$ nl = «\ r \ n»;
// Установите заголовок Content-type
$ headers = ‘MIME-Version: 1.0’. $ Nl;
$ заголовков. = ‘Content-type: text / html; charset = iso-8859-1 ‘.$ nl;
// Установить дополнительную информацию заголовков
$ headers. = ‘To: Mehrab Hossain’. $ Nl;
$ заголовков. = ‘От: Администратор’. $ Nl;
$ заголовков. = ‘Копия: [электронная почта защищена]’. $ Nl;
// Отправить электронное письмо с помощью функции message mail ()
if (mail ($ to, $ subject, $ message, $ headers)) {
echo «Электронное письмо успешно отправлено. \ R \ n»;
}
else {
echo «Электронное письмо не отправлено.\ r \ n «;
}
?>
Следующий вывод появится после запуска сценария с веб-сервера, если функция mail () работает правильно.
Следующие выходные данные появятся, если вы отметите почтовый ящик адреса электронной почты, который был установлен в качестве адреса электронной почты получателя.
Пример 3. Отправьте электронное письмо с вложением
В этом примере показано, как можно отправить электронное письмо, вложив текстовый файл. Создайте текстовый файл с помощью следующего сценария.
Содержимое текстового файла считывается и кодируется перед вложением, а функция md5 () используется в сценарии для генерации случайного числа для смешанного содержимого. Вся необходимая информация добавляется в переменные $ headers и $ message перед отправкой электронного письма.
php
// Установите адрес электронной почты получателя
$ равным = «[электронная почта защищена]»;
// Задайте тему электронного письма
$ subject = «Вложение файла»;
// Установить возврат каретки
$ nl = «\ r \ n»;
// Установите случайный хэш, который будет использоваться для смешанного содержимого
$ separator = md5 (time ());
// Прочтите содержимое прикрепленного файла
$ filename = ‘myfile.текст’;
$ content = file_get_contents ($ filename);
$ content = chunk_split (base64_encode ($ content));
// Установите сообщение электронной почты с информацией о вложении
$ message = «-«. разделитель $. $ nl;
$ message. = «Content-Type: text / plain; charset =» iso-8859-1 «». $ nl;
$ message. = «Content-Transfer-Encoding: 8bit». $ nl;
$ message. = «К письму прикреплен текстовый файл.». $ nl;
$ message. =» — «. $ separator. $ nl;
$ message. =» Content-Type: application / octet-stream; имя = «». $ filename. «» «. $ nl;
$ message. =» Content-Transfer-Encoding: base64 «. $ nl;
$ message. =» Content-Disposition: attachment «. $ nl;
$ message. = $ content. $ nl;
$ message. = «-«. $ separator. «-«;
// Установите заголовок Content-type
$ headers = ‘MIME-Version: 1.0 ‘. $ Nl;
$ headers. = «От: [электронная почта защищена]». $ Nl;
$ headers. = «Reply-To: [электронная почта защищена]». $ Nl;
$ headers. = «Content-Type: multipart / mixed; boundary =» «. $ Separator.» «». $ Nl;
// Отправить электронное письмо с помощью функции message mail ()
if (mail ($ to, $ subject, $ message, $ headers)) {
echo «Электронное письмо успешно отправлено с вложением. \ R \ n»;
}
else {
echo «Электронное письмо не отправлено.\ r \ n «;
}
?>
Следующий вывод появится после запуска сценария с веб-сервера, если функция mail () работает правильно.
Следующие выходные данные появятся, если вы отметите почтовый ящик адреса электронной почты, который был установлен в качестве адреса электронной почты получателя.
Заключение
В PHP существует множество способов отправки электронных писем. Функция PHP mail () не работает должным образом в Ubuntu после настройки конфигурации.В этом руководстве показаны необходимые конфигурации и способ отправки электронных писем с помощью функции PHP mail ().
Почему функция PHP Mail не отправляет почту?
Теоретически отправка электронной почты с помощью функции PHP mail () должна быть простой задачей. В «mail ()» всего 3 элемента: получатель, тема и сообщение, а электронное письмо доставляется всего с одной строкой кода.
Но, как и многие вещи, которые кажутся такими простыми, функция PHP mail () не всегда работает так гладко, и может быть сложно определить, почему.Это может быть, например, из-за того, что вам не хватает необходимых параметров, есть опечатки в адресе электронной почты получателя или вам нужно настроить ретранслятор SMTP.
Из всех возможных вариантов того, почему ваш PHP mail () не отправляет электронную почту, мы обнаружили, что большинство проблем связано с неправильной настройкой Postfix. Мы подробно рассмотрим Postfix, как его правильно настроить и протестируем, чтобы убедиться, что ваша почта отправляется.
Что такое Postfix?
Postfix — это бесплатный агент передачи почты с открытым исходным кодом, который маршрутизирует и доставляет электронные письма.Он следует протоколу SMTP и работает в Unix-подобных операционных системах, включая macOS.
Postfix настолько широко используется, что предустановлен на большинстве компьютеров, отличных от Windows. Хотя предустановленный Postfix удобен, это может означать, что он не был правильно настроен, что приведет к сбоям в работе PHP mail ().
Как настроить Postfix?
Прежде чем мы проверим, правильно ли настроен Postfix, давайте сначала проверим, установлен ли он.
В своем терминале выполните следующую команду:
Любые ошибки, выданные за это время, могут дать некоторое представление о том, что не работает. Но если вы получите ответ, подтверждающий, что он был установлен, смело переходите к следующему разделу.
Если он не был установлен, ознакомьтесь с документацией Postfix или обратитесь к своему хосту за инструкциями по установке.
Postfix имеет несколько требований, которые должны быть выполнены для правильной отправки электронных писем.
Сначала измените локальную конфигурацию Postfix.Вы можете загрузить редактор прямо со своего терминала, выполнив следующую команду:
После открытия убедитесь, что следующие 4 переменные определены следующим образом:
И вуаля! Сохраните изменения и перезапустите Postfix с помощью `sudo postfix reload`.
Мы обнаружили, что наиболее важной из этих переменных является myhostname. Если вы не определите эту переменную, ваша локальная среда не сможет назначить местоположение по умолчанию для отправки электронной почты. Используйте реальный домен или что-то произвольное (как в примере выше) для выполнения этого значения.
Как протестировать Postfix и PHP mail ()
Чтобы проверить, работает ли Postfix, а затем PHP mail (), мы создадим простой скрипт для запуска. В вашем любимом текстовом редакторе или интегрированной среде разработки (IDE) создайте файл с именем `mail.php` и включите следующий код:
Не забудьте заменить переменную `$ to` своим фактическим адресом электронной почты. В своем терминале запустите программу с помощью следующей команды и проверьте свою электронную почту:
Завершение
Отправка электронной почты с помощью PHP mail () довольно проста, что делает ее еще более неприятной, если она работает некорректно.Помните о конфигурации Postfix, если вы столкнетесь с ошибками при отправке.
Спросите себя:
- Постфикс установлен на вашем компьютере?
- Определены ли у вас 4 переменные, в частности «myhostname»?
- Вы добавили свой адрес электронной почты (и правильно его написали) при тестировании?
Если у вас по-прежнему возникают проблемы с PHP mail (), не отправляющим электронную почту, ознакомьтесь с этим ответом на StackOverflow, чтобы получить дополнительные идеи по устранению неполадок.
Отправка электронных писем на PHP с помощью PHPMailer
PHPMailer, пожалуй, самая популярная библиотека PHP с открытым исходным кодом для отправки электронных писем.Впервые он был выпущен еще в 2001 году, и с тех пор он стал излюбленным способом программной отправки электронных писем разработчикам PHP, не считая некоторых других фаворитов фанатов, таких как Swiftmailer.
В этой статье мы поговорим о том, почему вам следует использовать PHPMailer вместо функции PHP mail ()
, и мы покажем несколько примеров кода о том, как использовать эту библиотеку.
Эта популярная статья была обновлена в 2020 году и содержит самые свежие инструкции по работе с PHPMailer.
Является ли это альтернативой функции PHP
mail ()
?
В большинстве случаев это альтернатива функции PHP mail ()
, но есть много других случаев, когда функция mail ()
просто недостаточно гибкая для достижения того, что вам нужно.
Прежде всего, PHPMailer предоставляет объектно-ориентированный интерфейс, тогда как mail ()
не является объектно-ориентированным. Разработчики PHP обычно не любят создавать строки $ headers и
при отправке электронных писем с использованием функции mail ()
, потому что они требуют большого количества экранирований.PHPMailer делает это проще простого. Разработчикам также необходимо писать грязный код (экранирование символов, кодирование и форматирование) для отправки вложений и электронных писем на основе HTML при использовании функции mail ()
, тогда как PHPMailer делает это безболезненным.
Кроме того, функция mail ()
требует, чтобы локальный почтовый сервер отправлял электронные письма, что не всегда легко настроить. PHPMailer может использовать нелокальный почтовый сервер (SMTP), если у вас есть аутентификация.
Дополнительные преимущества:
- Он может печатать различные типы сообщений об ошибках на более чем 40 языках, когда ему не удается отправить электронное письмо.
- Он имеет встроенную поддержку протокола SMTP и аутентификацию через SSL и TLS.
- Он может отправлять альтернативную текстовую версию электронной почты для почтовых клиентов, отличных от HTML.
- У него очень активное сообщество разработчиков, которое обеспечивает его безопасность и актуальность.
PHPMailer также используется популярными системами управления контентом PHP, такими как WordPress, Drupal и Joomla.
Установка PHPMailer
Вы можете установить PHPMailer с помощью Composer:
композитору требуется phpmailer / phpmailer
Отправка электронной почты с локального веб-сервера с помощью PHPMailer
Вот простейший пример отправки электронного письма с локального веб-сервера с помощью PHPMailer:
Php
используйте PHPMailer \ PHPMailer \ PHPMailer;
используйте PHPMailer \ PHPMailer \ Exception;
require_once "поставщик / автозагрузка.php ";
$ mail = new PHPMailer (true);
$ mail-> From = "[email protected]";
$ mail-> FromName = "Полное имя";
$ mail-> addAddress ("[email protected]", "Имя получателя");
$ mail-> addAddress ("[email protected]");
$ mail-> addReplyTo ("[email protected]", "Ответить");
$ mail-> addCC ("[email protected]");
$ mail-> addBCC ("[email protected]");
$ mail-> isHTML (правда);
$ mail-> Subject = "Текст темы";
$ mail-> Body = " Текст сообщения в HTML ";
$ mail-> AltBody = "Это текстовая версия содержимого электронной почты";
пытаться {
$ mail-> send ();
echo "Сообщение успешно отправлено";
} catch (исключение $ e) {
echo «Ошибка почтовой программы:».$ mail-> ErrorInfo;
}
Код и комментарии должны быть достаточно ясными, чтобы объяснить все, что происходит.
Отправка электронного письма с вложениями
Вот пример того, как отправить электронное письмо с вложениями с помощью PHPMailer:
Php
используйте PHPMailer \ PHPMailer \ PHPMailer;
используйте PHPMailer \ PHPMailer \ Exception;
require_once "vendor / autoload.php";
$ mail = новый PHPMailer;
$ mail-> From = "[email protected]";
$ mail-> FromName = "Полное имя";
$ mail-> addAddress ("recipient1 @ example.com "," Имя получателя ");
$ mail-> addAttachment ("файл.txt", "Файл.txt");
$ mail-> addAttachment ("images / profile.png");
$ mail-> isHTML (правда);
$ mail-> Subject = "Текст темы";
$ mail-> Body = " Текст сообщения в HTML ";
$ mail-> AltBody = "Это текстовая версия содержимого электронной почты";
пытаться {
$ mail-> send ();
echo "Сообщение успешно отправлено";
} catch (исключение $ e) {
echo «Ошибка почтовой программы:». $ mail-> ErrorInfo;
}
Здесь мы прикрепляем два файла — файл .txt
, который находится в том же каталоге, что и сценарий, и images / profile.png
, который находится в каталоге images,
каталога сценария.
Чтобы добавить вложения к электронному письму, нам просто нужно вызвать функцию addAttachment
объекта PHPMailer, передав путь к файлу в качестве аргумента. Чтобы прикрепить несколько файлов, нам нужно вызывать его несколько раз.
Поиск и устранение неисправностей
В наших двух примерах мы использовали класс PHPMailer Exception для отладки, поэтому любые выданные ошибки помогут нам отладить любые проблемы, которые могут возникнуть.Мы также добавили аргумент true
в конструктор PHPMailer для вывода более наглядных исключений более высокого уровня.
В зависимости от используемой системы, вероятно, наиболее частая ошибка, которую мы будем видеть, будет связана с запуском функции mail ()
в фоновом режиме:
Ошибка почтовой программы: не удалось создать экземпляр почтовой функции.
Если нам нужны более подробные сведения об ошибке, мы также можем добавить что-то вроде этого в предложение catch:
print_r (error_get_last ());
Обычно проблема с почтовой функцией связана с отсутствующей настройкой почтового сервера, и в этом случае функция error_get_last
возвращает что-то вроде этого:
Массив (
[тип] => 2
[message] => mail (): Не удалось подключиться к почтовому серверу через порт 25 localhost, проверьте настройки «SMTP» и «smtp_port» в php.ini или используйте ini_set ()
[файл] => OUR_PATH \ vendor \ phpmailer \ phpmailer \ src \ PHPMailer.php
[line] => 863
)
Это проблема, с которой мы, вероятно, сталкиваемся чаще всего, и мы можем легко решить ее с помощью SMTP.
Отображение локализованных сообщений об ошибках
$ mail-> ErrorInfo
может возвращать сообщения об ошибках на 43 разных языках.
Чтобы отображать сообщения об ошибках на другом языке, скопируйте каталог language
из исходного кода PHPMailer в каталог проекта.
Чтобы возвращать сообщения об ошибках на русском языке, например, установите объект PHPMailer на русский язык, используя следующий вызов метода:
$ mail-> setLanguage ("ru");
Вы также можете добавить свои языковые файлы в каталог language
.
Использование SMTP
Вы можете использовать почтовый сервер другого хоста для отправки электронной почты, но для этого вам сначала потребуется аутентификация. Например, чтобы отправить электронное письмо с почтового сервера Gmail, вам потребуется учетная запись Gmail.
SMTP — это протокол, используемый почтовыми клиентами для отправки запроса на отправку электронной почты на почтовый сервер. После того, как почтовый сервер проверяет электронную почту, он отправляет ее на целевой почтовый сервер.
Вот пример отправки электронного письма с почтового сервера Gmail из вашего домена. Для запуска кода вам не нужен локальный почтовый сервер. Мы будем использовать протокол SMTP:
Php
используйте PHPMailer \ PHPMailer \ PHPMailer;
используйте PHPMailer \ PHPMailer \ SMTP;
используйте PHPMailer \ PHPMailer \ Exception;
require_once "поставщик / автозагрузка.php ";
$ mail = new PHPMailer (true);
$ mail-> SMTPDebug = 3;
$ mail-> isSMTP ();
$ mail-> Host = "smtp.gmail.com";
$ mail-> SMTPAuth = true;
$ mail-> Имя пользователя = "[email protected]";
$ mail-> Password = "super_secret_password";
$ mail-> SMTPSecure = "tls";
$ mail-> Порт = 587;
$ mail-> From = "[email protected]";
$ mail-> FromName = "Полное имя";
$ mail-> addAddress ("name @ example.com "," Имя получателя ");
$ mail-> isHTML (правда);
$ mail-> Subject = "Текст темы";
$ mail-> Body = " Текст сообщения в HTML ";
$ mail-> AltBody = "Это текстовая версия содержимого электронной почты";
пытаться {
$ mail-> send ();
echo "Сообщение успешно отправлено";
} catch (исключение $ e) {
echo «Ошибка почтовой программы:». $ mail-> ErrorInfo;
}
Gmail требует шифрования TLS через SMTP, поэтому мы настроили его соответствующим образом. Перед отправкой через SMTP вам необходимо узнать имя хоста, номер порта, тип шифрования, если требуется, и если требуется аутентификация, вам также понадобятся имя пользователя и пароль.Обратите внимание, что включение двухфакторной аутентификации в Gmail не позволит вам использовать их SMTP с именем пользователя и паролем. Вместо этого потребуется дополнительная настройка.
Одним из больших преимуществ использования удаленного SMTP над локальной почтой является то, что если вы используете функцию PHP mail ()
для отправки электронной почты с адресным доменом из
, установленным на любое другое имя, кроме локального имени домена (имя сервера), тогда фильтры атаки почтового сервера получателя помечают его как спам. Например, если вы отправляете электронное письмо с сервера с фактическим именем хоста example.com
с с адресом
[email protected]
до [email protected]
, тогда серверы Yahoo отметят его как спам или отобразят сообщение пользователю, чтобы он не доверял электронной почте, потому что исходная почта — example.com
, и все же он выглядит так, как будто идет с gmail.com
. Хотя вам принадлежит [email protected]
, Yahoo не сможет это выяснить.
Получение сообщений электронной почты с использованием POP3
PHPMailer также позволяет проверять POP-before-SMTP для отправки электронных писем.Другими словами, вы можете аутентифицироваться с помощью POP и отправлять электронную почту с помощью SMTP. К сожалению, PHPMailer не поддерживает получение писем с почтовых серверов по протоколу POP3. Он ограничивается только отправкой электронных писем.
Заключение
Если вы разработчик PHP, у вас мало шансов избежать программной отправки электронной почты. Хотя вы можете выбрать сторонние сервисы, такие как Mandrill или SendGrid, иногда это просто невозможно, а использование собственной библиотеки отправки электронной почты — еще меньше.Именно здесь на помощь приходит PHPMailer и его альтернативы (Zend Mail, Swift Mailer и т. Д.).
Вы можете узнать об API этой библиотеки в вики репозитория или в официальной документации.
Вы увязли в зависимостях библиотеки PHP? Посмотрите наш скринкаст и узнайте, как Composer может помочь вам в этом.
Как использовать Sendmail с PHP
HostGator стремится упростить перенос вашего сайта на новую учетную запись хостинга.Мы можем передать файлы веб-сайтов, базы данных, скрипты и один бесплатный перенос регистрации домена.
Что дает мне право на бесплатный перевод?
HostGator предоставляет бесплатные переводы для новых учетных записей в течение 30 дней после регистрации , а также для новых обновленных учетных записей. Для обновленных учетных записей это должно быть межсерверное обновление, чтобы соответствовать требованиям. Обратите внимание, что аккаунты с пониженной версией не имеют права на бесплатные переводы.
В зависимости от типа учетной записи, которую вы регистрируете, мы предлагаем разное количество бесплатных переводов.Пожалуйста, обратитесь к таблице ниже, чтобы увидеть, что мы включаем в новые пакеты.
Полные передачи cPanel — это количество включенных передач cPanel в cPanel.
Макс. Ручные переводы — это максимальное количество ручных переводов, включенных в вашу учетную запись.
Всего бесплатных переводов — это общее количество веб-сайтов, которые мы переместим для вас.
Тип счета | Всего бесплатных переводов | Полные переводы cPanel | Макс.Ручные передачи | ||||
---|---|---|---|---|---|---|---|
? Общий | 1 | 1 2 | 1 | ||||
? Торговый посредник | 30 | 30 2 | 30 2 | 1 | Без ограничений 2 | 10 на уровень VPS | |
? Dedicated (Basic) | Unlimited 1 | Unlimited 2 | 75 | Безлимитный 1 | Безлимитный 2 | 100 |
1 Хотя мы можем делать неограниченные переводы cPanel на cPanel для вас, в зависимости от вашей учетной записи, у вас будет ограниченное количество ручных переводов .
2 Полная передача cPanel включает все домены, дополнительные домены, поддомены и настройки cPanel. Это также будет включать вашу электронную почту и учетные записи электронной почты. Обратите внимание, что для этого требуется, чтобы генератор резервных копий cPanel вашего старого хоста был активен.
Несколько примеров: Учетная запись торгового посредника Aluminium включает до 30 бесплатных переводов. Из этих 30 у вас может быть 20 переводов cPanel на cPanel и 10 переводов вручную, или любая комбинация этих двух, что в сумме составляет 30 или меньше веб-сайтов.Другой пример: профессиональный выделенный сервер включает неограниченное количество передач cPanel на cPanel, это означает, что вы можете перенести 150 сайтов (или даже больше). Кроме того, поскольку общее количество переводов не ограничено, вы можете использовать до 100 переводов вручную.
Для получения дополнительной информации см. Статью «Поддержка переводов», свяжитесь с нашим отделом переводов по адресу transfer@hostgator.