Функция mail() – это встроенная функция PHP, которая используется для отправки электронной почты с локального хоста. Но для отправки электронной почты с помощью этой функции требуются некоторые настройки. Для настройки конфигурации вам потребуется реальная информация о почтовом сервере. Вы можете использовать информацию о почтовом сервере вашего активного хостингового сервера или любую информацию о бесплатном почтовом сервере. Учетная запись Gmail и информация о SMTP-сервере Gmail используются в этой статье для отправки электронной почты с помощью функции mail().
Настройка конфигурации
Для настройки конфигурации потребуется изменить два файла: файл php.ini и еще один файл, который необходимо настроить для настройки почтового сервера. Следуйте инструкциям ниже, чтобы настроить конфигурацию. На PHP доступно множество пакетов для отправки электронной почты. msmtp – это клиент почтового сервера PHP, который используется в этом руководстве для отправки электронной почты с помощью функции PHP mail().
Шаги :
Выполните следующую команду, чтобы установить пакет msmtp в Ubuntu для настройки почтового сервера:
$ sudo apt-get install msmtp
Создайте файл конфигурации с именем /etc/msmtprc с помощью следующей команды:
$ sudo nano /etc/msmtprc
Добавьте в файл следующее содержимое. Добавьте действующий адрес электронной почты для пользователя и действующий пароль для пароля, который будет использоваться для отправки электронного письма. Установите адрес электронной почты отправителя для значения формы .
defaults tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt account default host smtp.gmail.com port 587 auth on user username@gmail.com password user_password from 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 (string $to, string $subject, string $message [, mixed $additional_headers [, string $additional_parameters ]])
Эта функция может принимать четыре аргумента. Первый аргумент принимает адрес электронной почты получателя. Второй аргумент берет тему электронного письма. Третий аргумент принимает тело письма. Последний аргумент является необязательным и содержит дополнительную информацию об электронном письме в виде строки или массива.
Отправка электронной почты с помощью функции mail()
В этом разделе статьи показаны различные примеры отправки электронной почты с помощью функции PHP mail().
Пример 1. Отправка простого текстового сообщения электронной почты
В этом примере показано, как можно отправить простое текстовое электронное письмо с помощью функции mail(). Создайте файл PHP со следующим скриптом.
Вы должны установить действительный адрес электронной почты для переменной $to, чтобы получить вывод следующего скрипта. В качестве тела сообщения устанавливается простой текст.
<? php // Установить адрес электронной почты получателя $to="Receiver@gmail.com"; // Устанавливаем тему письма $subject="Это тестовое письмо"; // Устанавливаем тело письма $message="Тестирует тело письма"; // Устанавливаем информацию заголовка $headers="From: sender@gmail.com \r\n "; $headers.="Reply-To: sender@gmail.com \r\n "; // Отправляем электронное письмо с помощью функции сообщения mail() if ( mail($to, $subject, $message, $headers)) { echo "Электронное письмо успешно отправлено. \r\n"; } else { echo "Электронное письмо не отправлено. <br />"; } ?>
Пример 2. Отправьте электронное письмо в формате HTML.
В этом примере показано, как можно отправить электронное письмо в формате HTML с помощью функции mail(). Создайте файл PHP со следующим скриптом.
Переменная $message инициализируется содержимым HTML, которое будет отправлено как тело сообщения электронной почты. В переменной $header указано, что содержимое электронного письма – HTML.
<? php // Установите адрес электронной почты получателя $to="AndreyEx@gmail.com"; // Устанавливаем тему электронного письма $subject='Registration Successful'; // Задаем текст сообщения электронной почты $message='<h2> Ваша регистрация успешно завершена. </h2> <p> username =<b> andreyex</b> <br/> password =<b> aswQ34ghqw</b> </p> '; // Установить возврат каретки $nl="\r\n"; "MIME-Версия: 1.0".$nl; $headers.='Content-type: text/html; charset =iso-8859-1 '.$nl; // Устанавливаем дополнительную информацию заголовков $headers.='To: Mehrab Hossain'.$nl; $headers .='From: Админ'.$nl; $headers.='Cc: staff@example.com'.$nl; // Отправляем электронное письмо с помощью функции сообщения mail() if ( mail($to, $subject, $message, $headers)) { echo "Электронное письмо успешно отправлено. \ r \ n "; } else { echo "Электронное письмо не отправлено. \ r \ n "; } ?>
Пример 3. Отправьте электронное письмо с вложением.
В этом примере показано, как можно отправить электронное письмо, вложив текстовый файл. Создайте текстовый файл с помощью следующего сценария.
Содержимое текстового файла считывается и кодируется перед прикреплением, а функция md5() используется в сценарии для генерации случайного числа для смешанного содержимого. Вся необходимая информация добавляется в переменные $headers и $message перед отправкой электронного письма.
<? php // Установите адрес электронной почты получателя $to="AndreyEx@gmail.com"; // Устанавливаем тему электронного письма $subject="Вложение файла"; // Установить возврат каретки $nl="\r\n"; // Устанавливаем случайный хэш, который будет использоваться для смешанного содержимого $separator=md5(time()); // Считываем содержимое прикрепленного файла $filename='myfile.txt'; $content=file_get_contents($filename); $content=chunk_split(base64_encode($content)); // Установите сообщение электронной почты с информацией о вложении $message="--".$separator.$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; name="".$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.="От: andreyex1@gmail.com".$nl; $headers.="Reply-To: andreyex1@gmail.com".$nl; $headers.="Content-Type: multipart/mixed; boundary="".$separator.""".$nl; // Отправка электронной почты с помощью функции сообщения mail() if(mail($to,$subject,$message,$headers)){ echo "Электронное письмо с вложением успешно отправлено. \r\n"; } else { echo "Электронное письмо не отправлено. \r\n"; } ?>
Заключение
В PHP существует множество способов отправки электронных писем. Функция PHP mail() не работает должным образом в Ubuntu после настройки конфигурации. В этой статье показаны необходимые конфигурации и способ отправки электронных писем с помощью функции PHP mail().