Отправка письма с лендинга: Как делать можно и как нельзя

test

Начнем с того, как НЕЛЬЗЯ. Увы, так часто поступают верстальщики и сильно ухудшают ситуацию, так как очень многие письма при этом не доходят и об этом Вы не узнаете. Ведь они даже не то что в спам могут не свалиться, а просто быть отброшены почтовиком еще до перемещения в почту.

Почему так делать нельзя?

Сегодня почтовые сервисы на столько щепетильно и тщательно фильтруют почту что быстрее отправят в утиль нужное письмо, чем допустят спам. Из-за этого и имеем проблемы с этим методом.

  • Ваш сервер, с которого будет отправка сайта не адаптирован под отправку, не будет нужных заголовков
  • 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) В разделе Ненадежные приложения, у которых есть доступ к аккаунту в нижней части страницы нажмите Открыть доступ.
Все это описано в помощи гугла.

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

Категория: 
Share/Save

Делитесь с друзьями в социальных сетях! Оставляйте комментарии!

Share/Save

Это Вам так же может быть интересно!