Мой код require_once 'PHPMailer/PHPMailerAutoload.php'; $mail = new PHPMailer; $Mailer = 'sendmail'; $mail->setFrom('pnk66@mail.ru', 'First Last'); $mail->addAddress('nikolaypaziy@gmail.com'); $mail->Subject = 'PHPMailer file sender'; $mail->msgHTML("My message body"); // Attach uploaded files $mail->addAttachment($filename); //$mail->addAttachment($filename2); $r = $mail->send(); не отправляет сообщение .А выдается ошибка Could not instantiate mail function.PHP и WEb сервер развернуты на локальной машине.Почтовых серверов на компе нет. Как добиться отправки сообщения?
Сам по себе данный класс не отправляет почту. Он использует программу-почтовик, установленный на компьютере, с которого будет идти отправка. В вашем случае такой программы нет. Поэтому вам лучше использовать SMTP отправку Код (Text): $Mailer = 'sendmail'; Код (Text): //$Mailer = 'sendmail'; $Mailer = 'SMTP'; и конечно же указать параметры от SMTP соединения Посмотреть примеры кода можно тут https://github.com/PHPMailer/PHPMailer
Что значит напрямую? если SMTP то идет соединение по 465 или другому порту к серверу-почтовику, если sendmail - то идет вызов данной программы в ОС
насколько я знаю - нет, напрямую не отправляет --- Добавлено --- The PHP mail() function usually sends via a local mail server, typically fronted by a sendmail binary on Linux, BSD and OS X platforms, however, Windows usually doesn't include a local mail server; PHPMailer's integrated SMTP implementation allows email sending on Windows platforms without a local mail server. Это из github, раздел Why you might need it
Ну значит я был прав. Нужно только подкрутить. --- Добавлено --- ТСу: только лучше не используйте такой режим настройки на продакшине, отправляйте через «почтовик» (сервер или даже клиент).
Наверняка пых можно состыковать и с каким-нить клиентом (ищи такие, которые имеют продвинутый интерфейс командной строки) и отправлять через удаленный почтовый ящик/сервер.
Сам по себе php (или какая-либо библиотека php) не способен отправлять письма. Первый и самый простой с виду способ отправки писем - это функция mail(), но для того, чтоб она работала, необходимо иметь в наличии работающий mail-сервер и отредактировать php.ini следующим образом: Код (Text): [mail function] SMTP = localhost smtp_port = 25 sendmail_from = me@example.com sendmail_path = "php.exe C:\sendmail.php --dir C:\mail --open" ; в случае линукса возможна следующая строка ; sendmail_path = /usr/sbin/sendmail -t -i -F"Full Name" -f'emailaddress@example.com' Но зачастую хостинг-компании не предоставляют возможность настраивать подобным образом php.ini, либо вообще отключают функцию mail(), поэтому дефакто стандартом является использование сторонних (или собственных mail-серверов) и отправка письма с помощью SMTP. В качестве примера будем использовать популярный PHPMailer (версия 6.0.1) и mail-сервер от Yandex : В каталог помещаем следующие файлы из библиотеки: Exception.php OAuth.php PHPMailer.php POP3.php SMTP.php а также собственный файл send.php с следующим содержанием: PHP: <?php ini_set("display_errors", 1); ERROR_REPORTING(E_ALL); include dirname(__FILE__)."/PHPMailer.php"; include dirname(__FILE__)."/SMTP.php"; include dirname(__FILE__)."/Exception.php"; $mail = new PHPMailer\PHPMailer\PHPMailer; $mail->isSMTP(); $mail->Host = 'smtp.yandex.ru'; $mail->SMTPAuth = true; $mail->Username = "bot@yandex.ru"; // SMTP account username $mail->Password = "g87j094876-067"; // SMTP account password $mail->SMTPSecure = 'ssl'; $mail->Port = 465; $mail->setfrom('bot@yandex.ru', 'Robot'); $mail->isHTML(true); $mail->addaddress('info@yandex.ru', 'Info'); $mail->Subject = "mysubject"; $mail->Body = "mybody"; //Отправка сообщения if(!$mail->send()) { echo 'Ошибка при отправке. Ошибка: ' . $mail->ErrorInfo; } else { echo 'Сообщение успешно отправлено'; }
Даже если выразиться точнее, то де-факто стандартом является явное подключение из php к сторонним mail-серверам (или опять-таки собственным mail-серверам) и отправка письма с помощью SMTP.
Приведите хотя бы один пример такого хостера, вместо того чтобы пересказывать байки. Только фришный хостинг сюда не приплетайте. Это стандарт для школоты. Серьезные товарищи используют отдельный локальный «почтовик» (способы доставки при этом могут сильно варьироваться).
1) Я указал общую глобальную тенденцию. Не вижу смысла заниматься рекламой или антирекламой конкретных хостеров. 2) Серьезные товарищи все и так знают, за советами не обращаются. Потому в данном случае советуем максимально простые вещи.
И тем не менее серьезные или не серьезные товарищи помогли решить задачу и это главное. Благодарю за подсказки.