22 окт 2020

Отправка почты в php

#php, #mail

Вы создали своё приложение, написали логику и воплотили идею. Теперь ваш проект готов к взаимодействию с пользователем. Вам осталось только настроить отправку почтовых уведомлений. И в этом вам поможет php и встроенная функция mail. Но, как и всегда в разработке, дьявол кроется в деталях.

Отправка почты в php

Самая главная загвоздка в том, что php сам не отправляет email, а лишь передает данные из вашего приложения почтовому серверу. А вот его, как раз может и не быть. Тогда отправка сообщений завершится провалом, а функция mail бестолково будет возвращать false. В этом случае, предлагаю вам рассмотреть postfix, он достаточно легок в настройке и, главное устанавливается без лишних проблем(на просторах интернета очень много гайдов).

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

Предположим, что у вас всё настроено верно и отправка email-сообщений возможна. Значит пора приступать использовать функцию mail.

1
mail($to , $subject , $message [, $headers [, $additional_parameters ]] ) : bool

Думаю, первые три аргумента в комментариях не нуждаются, а вот про $headers и $additional_parameters стоит поговорить. $headers(необязательный) - это строка или массив с дополнительными заголовками, которые будут отправлены вместе с письмом. $additional_parameters(необязятальный) - строка с дополнительными настройками, которые будут переданы почтовому серверу. В общем виде отправка может выглядеть так:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php

$to      = 'stranger@mail.ru';
$subject = 'Новое сообщение от информационной системы';
$message = 'У тебя появились новые ученики! Это письмо создано автоматически';
$headers = [
        'From' => 'alex@alexp007.ru',
        'Reply-To' => 'alex@alexp007.ru'
];

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

Всегда рекомендую в $message добавлять строку о том, что письмо создано автоматически, а в $headers добавлять заголовок 'Reply-To'. Это позволит избежать попадания в спам.

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

Все статьи

© 2020-2021 Александр Пантелеев