Мне нужно отправить почту пользователям моего сайта, используя php-скрипт. Я пробовал использовать функцию почты в php.
Мой код выглядит следующим образом:
$to = "myweb@gmail.com"; $subject = "Test mail"; $message = "My message"; $from = "webp@gmail.com"; $headers = "From:" . $from; mail($to,$subject,$message,$headers);
Когда я пытаюсь запустить программу, это то, что я получаю:
Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set().
Скажите, пожалуйста, какой адрес включить в переменную $ from. Мне нужен сервер smtp для этого? Как отправить почту с помощью localhost? Скажите, пожалуйста, что именно редактировать в файле php.ini
Я новичок во всем этом .. Пожалуйста, помогите мне ..
Вместо этого используйте PHPMailer: https://github.com/PHPMailer/PHPMailer
Как это использовать:
require('./PHPMailer/class.phpmailer.php'); $mail=new PHPMailer(); $mail->CharSet = 'UTF-8'; $body = 'This is the message'; $mail->IsSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->SMTPDebug = 1; $mail->SMTPAuth = true; $mail->Username = 'me.sender@gmail.com'; $mail->Password = '123!@#'; $mail->SetFrom('me.sender@gmail.com', $name); $mail->AddReplyTo('no-reply@mycomp.com','no-reply'); $mail->Subject = 'subject'; $mail->MsgHTML($body); $mail->AddAddress('abc1@gmail.com', 'title1'); $mail->AddAddress('abc2@gmail.com', 'title2'); /* ... */ $mail->AddAttachment($fileName); $mail->send();
Для отправки электронной почты вам необходимо настроить службу smtp на локальном компьютере. Есть много доступных свободно просто искать в google.
Если вы владеете сервером или VPS загружаете скрипт, он будет работать нормально.
Вы не сможете отправлять сообщения через почтовые серверы других пользователей. Проконсультируйтесь с вашим провайдером хостинга о том, как отправлять электронные письма. Попробуйте отправить электронное письмо с вашего сервера без PHP, вы можете использовать любой почтовый клиент, такой как Outook. После этого попробуйте настроить PHP.ini с помощью настройки SMTP (отправки электронной почты) почтового клиента электронной почты.
Обычно хорошим местом для начала, когда вы сталкиваетесь с проблемами, является руководство . Страница настройки электронной почты объясняет, что существует большая разница между командой PHP mail, запущенной на MSWindows и в любой другой операционной системе; это хорошая идея, когда вы отправляете вопрос, чтобы предоставить соответствующую информацию о настройке этой части вашей системы и о том, в какой операционной системе она работает.
Ваш PHP настроен на общение с SMTP-сервером – по умолчанию для машины MSWindows, но либо у вас не установлено MTA, либо блокируется соединение. В то время как для коммерческого веб-сайта, на котором работает ваш собственный MTA, он довольно быстро входит в список вещей, которые нужно сделать, это не тривиальное упражнение – вам действительно нужно знать, что вы делаете, чтобы обеспечить безопасную настройку и работу. В вашем случае было бы более разумным использовать службу, настроенную и управляемую кем-то еще.
Поскольку вы будете подключаться к удаленному MTA с использованием адреса gmail, вам, вероятно, следует использовать сервер Gmail; вам понадобится аутентификация SMTP и, возможно, поддержка SSL – ни одна из них не поддерживается функцией mail () в PHP. Здесь есть простой пример использования swiftmailer с gmail или вот пример использования phpmailer
Чтобы исправить это, вы должны просмотреть свой PHP.INI и настройки почтовых служб, которые у вас есть на вашем сервере.
Но мой лучший совет для вас – это забыть о функции mail()
. Это зависит от настроек PHP.INI, его конфигурация отличается в зависимости от платформы (Linux или Windows), и она не может обрабатывать аутентификацию SMTP , что является большой проблемой в текущие дни. Слишком много головной боли.
Вместо этого используйте «PHP Mailer» ( http://phpmailer.worxware.com ), это класс PHP, доступный бесплатно, и он может обрабатывать практически любой SMTP-сервер, внутренний или внешний, с аутентификацией или без нее, он работает точно так же на Linux и Windows, и это не будет зависеть от настроек PHP.INI. Он поставляется со многими примерами, он очень мощный и простой в использовании.
Вот ссылка, которая дает мне ответ, и мы используем gmail:
Установите «поддельный sendmail для окон». Если вы не используете XAMPP, вы можете скачать его здесь: http://glob.com.au/sendmail/sendmail.zip
Измените файл php.ini, чтобы использовать его (прокомментировали другие строки):
Только для Win32.
SMTP = smtp.gmail.com smtp_port = 25 For Win32 only. sendmail_from = <e-mail username>@gmail.com
Только для Unix.
Вы также можете указать аргументы (по умолчанию: sendmail -t -i
).
sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
(игнорируйте бит «Unix only», поскольку мы фактически используем sendmail)
Затем вам нужно настроить файл «sendmail.ini» в каталоге, где был установлен sendmail:
smtp_server=smtp.gmail.com smtp_port=25 error_logfile=error.log debug_logfile=debug.log auth_username=<username> auth_password=<password> force_sender=<e-mail username>@gmail.com