Почта не отправляется - SendMail не работает!

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Почта не отправляется - SendMail не работает!

Сообщение xor » Чт сен 13, 2018 12:10 am

Пойдем другим путём(
Проверим работу пхпмэлера
Создаём сценарий:

Код: Выделить всё

/**
 * This example shows settings to use when sending via Google's Gmail servers.
 */

//SMTP needs accurate times, and the PHP time zone MUST be set
//This should be done in your php.ini, but this is how to do it if you don't have access to that
//date_default_timezone_set('Etc/UTC');

require_once 'lib/PHPMailer/PHPMailerAutoload.php';

//Create a new PHPMailer instance
$mail = new PHPMailer;
$mail->setLanguage('ru', 'lib/PHPMailer/language/');
//Tell PHPMailer to use SMTP
$mail->isSMTP();

//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;

//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';

//Set the hostname of the mail server
$mail->Host = 'smtp.yandex.com';

//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$mail->Port = 587;

//Set the encryption system to use - ssl (deprecated) or tls
$mail->SMTPSecure = 'tls';

//Whether to use SMTP authentication
$mail->SMTPAuth = true;


$mail->CharSet = "UTF-8";
//Username to use for SMTP authentication - use full email address 
$mail->Username = gg('Sergey.YaMailAddress');

//Password to use for SMTP authentication
$mail->Password =gg('Sergey.YaPassword');

//Set who the message is to be sent from
$mail->setFrom(gg('Sergey.YaMailAddress'), 'Alice');

//Set an alternative reply-to address
//$mail->addReplyTo('replyto@example.com', 'First Last');

//Set who the message is to be sent to
$mail->addAddress('VasyaPupkin@gmail.com', 'Vasya Pupkin'); //VasyaPupkin@gmail.com меняем на реальный адрес кому слать письмо

//Set the subject line

$subj='Второй Текст в кодировке UTF';
$mail->Subject = $subj;

//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
//$mail->msgHTML(file_get_contents('lib\PHPMailer\examples\index.html'), dirname(__FILE__));
//$body=iconv("UTF-8", "WINDOWS-1251", 'тестовая отправка <b>in bold!</b>');
$body='Проба кодировки';
$mail->Body = $body ;
//Replace the plain text body with one created manually
//$mail->AltBody = 'This is a plain-text message body';

//Attach a file
//$mail->addAttachment('c:/myip.txt');  // проверим вложение

//send the message, check for errors
if (!$mail->send()) {
    echo "Ошибка почты: " . $mail->ErrorInfo;
} else {
    echo "Письмо отправлено!";
}
меняем в нём VasyaPupkin@gmail.com на реальный адрес кому слать письмо
Запускаем, анализируем лог на предмет ошибок
За это сообщение автора xor поблагодарил:
mit (Чт сен 13, 2018 4:37 pm)
Рейтинг: 1.16%
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Почта не отправляется - SendMail не работает!

Сообщение xor » Чт сен 13, 2018 12:20 am

Запускать сценарий лучше по ссылке - откроется окно в браузере и туда будет валиться отладка типа

Код: Выделить всё

SERVER -> CLIENT: 220 smtp4p.mail.yandex.net ESMTP (Want to use Yandex.Mail for your domain? Visit http://pdd.yandex.ru)
CLIENT -> SERVER: EHLO 192.168.1.7
SERVER -> CLIENT: 250-smtp4p.mail.yandex.net250-8BITMIME250-PIPELINING250-SIZE 42991616250-STARTTLS250-AUTH LOGIN PLAIN XOAUTH2250-DSN250 ENHANCEDSTATUSCODES
CLIENT -> SERVER: STARTTLS
SERVER -> CLIENT: 220 Go ahead
CLIENT -> SERVER: EHLO 192.168.1.7
SERVER -> CLIENT: 250-smtp4p.mail.yandex.net250-8BITMIME250-PIPELINING250-SIZE 42991616250-AUTH LOGIN PLAIN XOAUTH2250-DSN250 ENHANCEDSTATUSCODES
CLIENT -> SERVER: AUTH LOGIN
SERVER -> CLIENT: 334 VXNlcm5hbWU6
CLIENT -> SERVER: c2VyZ2V5Lmxlc25pa292QHlhbmRleC5ydQ==
SERVER -> CLIENT: 334 UGFzc3dvcmQ6
CLIENT -> SERVER: THNWMjAxNWE=
SERVER -> CLIENT: 235 2.7.0 Authentication successful.
...
...
... много-много диагностики
...
CLIENT -> SERVER: Message-ID: <d409dafe372ac7108337cd3268bda85b@192.168.1.7>
CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.16 (https://github.com/PHPMailer/PHPMailer)
CLIENT -> SERVER: MIME-Version: 1.0
CLIENT -> SERVER: Content-Type: text/plain; charset=UTF-8
CLIENT -> SERVER: Content-Transfer-Encoding: 8bit
CLIENT -> SERVER: 
CLIENT -> SERVER: Проба кодировки
CLIENT -> SERVER: 
CLIENT -> SERVER: .
SERVER -> CLIENT: 250 2.0.0 Ok: queued on smtp4p.mail.yandex.net as 1536786100-Py6GxS4qLT-1dXeY75F
CLIENT -> SERVER: QUIT
SERVER -> CLIENT: 221 2.0.0 Closing connection.
Письмо отправлено!
ps Меня настораживает ответ - неизвестная команда, вроде, это реакция системы на получение какой-то внешней команды.
mit
Сообщения: 12
Зарегистрирован: Пт июл 13, 2018 6:29 pm
Благодарил (а): 4 раза
Поблагодарили: 0

Re: Почта не отправляется - SendMail не работает!

Сообщение mit » Чт сен 13, 2018 3:44 pm

Правильным путём через функцию пока никак - Неизвестная команда
Другим путем получилось, даже пришло не в спам.
СпойлерПоказать

Код: Выделить всё

...
много много всего
...
2018-09-13 12:16:54 CLIENT -> SERVER: From: Alice <mit@yandex.ru>
2018-09-13 12:16:54 CLIENT -> SERVER: Subject: =?UTF-8?B?0JLRgtC+0YDQvtC5INCi0LXQutGB0YIg0LIg0LrQvtC00LjRgNC+0LLQutC1?=
2018-09-13 12:16:54 CLIENT -> SERVER: =?UTF-8?B?IFVURg==?=
2018-09-13 12:16:54 CLIENT -> SERVER: Message-ID: <7f0e8197c6e40b063f458ad063aafca9@127.0.0.1>
2018-09-13 12:16:54 CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.26 (https://github.com/PHPMailer/PHPMailer)
2018-09-13 12:16:54 CLIENT -> SERVER: MIME-Version: 1.0
2018-09-13 12:16:54 CLIENT -> SERVER: Content-Type: text/plain; charset=UTF-8
2018-09-13 12:16:54 CLIENT -> SERVER: Content-Transfer-Encoding: 8bit
2018-09-13 12:16:54 CLIENT -> SERVER: 
2018-09-13 12:16:54 CLIENT -> SERVER: Проба кодировки
2018-09-13 12:16:54 CLIENT -> SERVER: 
2018-09-13 12:16:54 CLIENT -> SERVER: .
2018-09-13 12:16:59 SERVER -> CLIENT: 250 2.0.0 Ok: queued on smtp2o.mail.yandex.net as 1536841062-50ghXHAAry-HZKiLcGF
2018-09-13 12:16:59 CLIENT -> SERVER: QUIT
2018-09-13 12:16:59 SERVER -> CLIENT: 221 2.0.0 Closing connection.
Письмо отправлено!
Последний раз редактировалось mit Чт сен 13, 2018 10:20 pm, всего редактировалось 3 раза.
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Почта не отправляется - SendMail не работает!

Сообщение xor » Чт сен 13, 2018 9:55 pm

На основе этого примера я, по моему, функцию и писал. Можно попробовать закомментировать сообщения функции Письмо отправлено!, может ошибка уйдёт.

Или переделать этот пример под себя, там в начале дебаг отключить(=0) и пользоваться вместо функции
За это сообщение автора xor поблагодарил:
mit (Пт сен 14, 2018 7:12 am)
Рейтинг: 1.16%
mit
Сообщения: 12
Зарегистрирован: Пт июл 13, 2018 6:29 pm
Благодарил (а): 4 раза
Поблагодарили: 0

Re: Почта не отправляется - SendMail не работает!

Сообщение mit » Пт сен 14, 2018 7:11 am

Да, спасибо. Обходной путь теперь есть. Дальше буду пытаться запустить функцию. Комментарий не влияет, но если в папке сделать копию файла с такой же функцией, система начинает ругаться на повторное декларирование. В идеале подменить вызов системной SendMail.
mit
Сообщения: 12
Зарегистрирован: Пт июл 13, 2018 6:29 pm
Благодарил (а): 4 раза
Поблагодарили: 0

Re: Почта не отправляется - SendMail не работает!

Сообщение mit » Ср сен 19, 2018 9:28 am

Мистика какая то! Получилось вызвать mySendMail из сценария. Но при этом из командной строки и из сцен не вызывается.
FredP
Сообщения: 59
Зарегистрирован: Ср авг 23, 2017 5:35 pm
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Почта не отправляется - SendMail не работает!

Сообщение FredP » Чт июл 11, 2019 12:03 pm

Всем привет. Raspberry Pi3. Образ из соответствующей темы. Отправляю почту через sendmail и ssmtp. Проблема: почта отправляется только когда есть связь. А вот письма отправленные в период отсутствия интернета не отправляются при его подключении. Почему?
sendmail настроен на отправку с gmail
FredP
Сообщения: 59
Зарегистрирован: Ср авг 23, 2017 5:35 pm
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Почта не отправляется - SendMail не работает!

Сообщение FredP » Ср июл 17, 2019 11:51 am

Короче ssmtp это просто перенаправлялка, и если сервер недоступен - письмо пропадает по всей видимости. Установил SMTP сервер exim4 - все норм, письма кладутся в очередь если нет связи. Но вот почему когда связь появляется, они из очереди отправляются только 45 минут. А потому что в настройках стоит попытка каждые 15 минут первые 2 часа и запуск очереди попыток каждые полчаса. Все это нужно править в конфиге.
crazpit
Сообщения: 13
Зарегистрирован: Пт авг 30, 2019 5:17 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Почта не отправляется - SendMail не работает!

Сообщение crazpit » Пт авг 30, 2019 5:22 pm

отправка писем решена так
https://vk-book.ru/files/SendMailSmtpClass_v1_1.rar
распаковать
закинуть "SendMailSmtpClass.php" в
c:\_majordomo\htdocs\modules\scripts\

сделать скрипт такой
--------------------------------------------
require_once "SendMailSmtpClass.php"; // подключаем класс
$mailSMTP = new SendMailSmtpClass('address.org@yandex.ru', 'pass, 'ssl://smtp.yandex.ru', 465, "UTF-8");
// $mailSMTP = new SendMailSmtpClass('логин', 'пароль', 'хост', 'порт', 'кодировка письма');

// от кого
$from = array(
" Фамилия Имя Александрович", // Имя отправителя
"address.org@yandex.ru" // почта отправителя
);
// кому
$to = 'address.org@yandex.ru';

// отправляем письмо
$result = $mailSMTP->send($to, 'Тема письма', 'Текст письма', $from);
//$result = $mailSMTP->send('Кому письмо', 'Тема письма', 'Текст письма', 'Отправитель письма');

if($result === true){
echo "Done";
}else{
echo "Error: " . $result;
}
---------------------------------------------------------
с яндексом работает
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Почта не отправляется - SendMail не работает!

Сообщение directman66 » Ср сен 25, 2019 4:30 pm

По мотивам этой библиотеки сделал модуль https://connect.smartliving.ru/tasks/541.html

Протестировал на почте gmail

Вложений пока нет, подписки тоже. Будет позже, если понадобится.
За это сообщение автора directman66 поблагодарил:
dengi.76 (Ср сен 25, 2019 6:37 pm)
Рейтинг: 1.16%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Ответить