

Начнем с того, как НЕЛЬЗЯ. Увы, так часто поступают верстальщики и сильно ухудшают ситуацию, так как очень многие письма при этом не доходят и об этом Вы не узнаете. Ведь они даже не то что в спам могут не свалиться, а просто быть отброшены почтовиком еще до перемещения в почту.
Почему так делать нельзя?
Сегодня почтовые сервисы на столько щепетильно и тщательно фильтруют почту что быстрее отправят в утиль нужное письмо, чем допустят спам. Из-за этого и имеем проблемы с этим методом.
- Ваш сервер, с которого будет отправка сайта не адаптирован под отправку, не будет нужных заголовков
- IP не прогрет
- Ваш домен или IP хостинга легко может находиться в черном списке и вы даже не будете знать об этом
- Еще куча причин вдаваться в которые нет предмет этого материала.
Если вы не получаете письмо, с большой долей вероятности вы теряете клиента, а значит такой код просто недопустим.
А как нужно делать?
А вот теперь о том как нужно:
0) Ставим Composer как сказано в официальной документации:
//здесь в папку загружается файл установщик для composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
//проверяется цифровой отпечаток что файл с официального источника, а не подмена
php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
//выполняется установка
php composer-setup.php
//удаляется установочный файл
php -r "unlink('composer-setup.php');"
1) Нужно подключить нормальную библиотеку через композер или напрямую в php файл. Тут указано в документации библиотеки, конкретнее командой в консоли:
php composer.phar require "swiftmailer/swiftmailer:^6.0"
2) Зарегистрировать бесплатный ящик на том же gmail или другом почтовом хостинге. Или же создать почту для своего домена, опять же, лучше всего платную. Стоит такая 5-6у.е. в месяц за 1 почтовый ящик. К примеру создадим простой example@gmail.com
3) Настроить отправку через SMTP сервера из п.2.
Пример кода:
require_once '/path/to/vendor/autoload.php';
// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls'))
->setUsername('example@gmail.com')
->setPassword('your password')
;
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$message = (new Swift_Message('Тут тема письма'))
->setFrom(['example@gmail.com' => 'Имя отправителя'])
->setTo(['receiver@domain.org'])
->setBody('Текст письма');
//Если нужно отправить файл во вложении используем следующий код:
if (!empty($_FILES['file']) && empty($_FILES['file']['error'])){
$smessage->attach(Swift_Attachment::fromPath($_FILES['file']['tmp_name'])->setFilename($_FILES['file']['name']));
}
//но сразу стоит уточнить, стоит делать проверку на правильность вложенного файла, размера,
// расширения и т.д. Чтобы не отправить вредоносный файл или непригодный размер
// Send the message
$result = $mailer->send($message);
Если это Gmail...
Но... Есть еще одна заковырка конкретно гугла, он запрещает отправку для непроверенных приложений. А значит не даст вам таким образом отправлять письма.
Чтобы решить это:
1) Кликаете на профиль гугло-пользователя:
2) На панели навигации слева выберите Безопасность.
3) В разделе Ненадежные приложения, у которых есть доступ к аккаунту в нижней части страницы нажмите Открыть доступ.
Все это описано в помощи гугла.
Вот теперь можете отправлять письма и они с большой вероятностью хотя бы в ящик попадут. Массово вы так отправлять письма не сможете, там действуют другие ограничения. Улучшение доставляемости писем тема почти бесконечная, но даже этот пример будет на порядки лучше чем в видео и общепринятый.
