mrerberg
@mrerberg
Yep

Как отправить email через SMTP?

Всем привет!

У меня есть задача: после отправки формы отправлять письмо через yandex SMTP. Отправляю данные с формы ajax-ом.

Попробовал выполнить это через phpmailer, но ничего не отправляется. Проблема не в расположении файлов(отсылал письмо с хостингового мейла), не в ajax-е(дает зеленый свет), это протестил. Данные (почта и пароль от нее) верные.
Проблема (видимо) в соединении с SMTP. Все лежит на хостинге.

-- PHP --
require_once('phpmailer/PHPMailerAutoload.php');
  $mail = new PHPMailer;
  $mail->CharSet = 'utf-8';


  $mail->isSMTP();                                   
  $mail->Host = 'smtp.yandex.ru';  																						
  $mail->SMTPAuth = true;                              
  $mail->Username = '***@yandex.ru'; 
  $mail->Password = 'password';
  $mail->SMTPSecure = 'ssl';                            
  $mail->Port = 465; 

  $mail->setFrom(''***@yandex.ru');
  $mail->addAddress($_POST['email']);     // Кому будет уходить письмо
  $mail->isHTML(true);                                  // Set email format to HTML

  $mail->Subject = 'Email с сайта';
  $mail->Body    = 'Имя: ' . $_POST['name'];
  $mail->AltBody = '';


Использовал файлы phpmail-а из этого урока:
https://www.youtube.com/watch?v=-yZfdyPMzCE
Файлы:
https://www.dropbox.com/s/3q4z5osyp4cxbdj/form-les...

Забавно, но когда я копался в коде отправления (вставлял тестовые данные ручками), письмо однажды было отослано, но сейчас грухо. Возможно, я что-то пропустил.

Заранее спасибо за любую помощь!
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
Проблема решается очень просто.
$mail->SMTPOptions =
[
   'ssl' => 
   [
      'verify_peer' => false,
      'verify_peer_name' => false,
      'allow_self_signed' => true
   ]
];


А ещё у вас тут лишняя кавычка.
$mail->setFrom(''***@yandex.ru');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы