My ISP
требует, чтобы я отправил имя пользователя и пароль для исходящей SMTP
почты.
Как заставить PHP
использовать это при выполнении php.mail()?
Файл php.ini
содержит только записи для серверов (SMTP= )
и From: (sendmail_from= )
.
My ISP
требует, чтобы я отправил имя пользователя и пароль для исходящей SMTP
почты.
Как заставить PHP
использовать это при выполнении php.mail()?
Файл php.ini
содержит только записи для серверов (SMTP= )
и From: (sendmail_from= )
.
Команда PHP mail()
не поддерживает аутентификацию. Ваши варианты:
mail()
поддерживает аутентификацию, если (а) sendmail установлен на сервере и (б) детали аутентификации указаны в файле php.ini. Подробности смотрите в ответах ниже.
- person James McCormack; 11.04.2014
mail()
, а не PHPMailer
- person mastazi; 15.01.2016
Я применяю следующие детали к файлу php.ini. работает нормально.
SMTP = smtp.example.com
smtp_port = 25
username = [email protected]
password = yourmailpassord
sendmail_from = [email protected]
Эти детали такие же, как и в настройках Outlook.
Warning: mail(): SMTP server response: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM
- person djk; 09.05.2016
Используйте Fake sendmail для Windows для отправки почты.
sendmail
в C:\wamp\
.sendmail
: sendmail.exe
, libeay32.dll
, ssleay32.dll
и sendmail.ini
.C:\wamp\sendmail\sendmail.ini
:smtp_server=smtp.gmail.com smtp_port=465 [email protected] auth_password=your_password
Теперь перезапустите Apache, и это все, что вам нужно сделать.
smtp
из вашего файла php.ini
, потому что это на самом деле не требуется, если вы уже обрабатываете эти значения в своем файле sendmail.ini
. Кроме того, я смог заставить его работать только в том случае, если я использовал sendmail_path = "C:\Program Files (x86)\sendmail\sendmail.exe"
без параметра -t
. Если кому интересно, я использовал IIS в Windows 10.
- person haZh; 17.10.2020
PHP имеет аутентификацию в почтовой команде!
На WAMPSERVER у меня работает следующее (windows, php 5.2.17)
php.ini
[mail function]
; For Win32 only.
SMTP = mail.yourserver.com
smtp_port = 25
auth_username = smtp-username
auth_password = smtp-password
sendmail_from = [email protected]
Warning: mail(): SMTP server response: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM
- person djk; 09.05.2016
/etc/postfix/main.cf
следующим образом:#Relay config
relayhost = smtp.server.net
smtp_use_tls=yes
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_sasl_security_options = noanonymous
/etc/postfix/sasl_passwd
, введите:smtp.server.net username:password
Введите # /usr/sbin/postmap sasl_passwd
Затем запустите: service postfix reload
Теперь PHP будет запускать почту как обычно с помощью команды sendmail -t -i
, а Postfix перехватит ее и ретранслирует на указанный вами SMTP-сервер.
Я предпочитаю инструмент PHPMailer, так как он не требует PEAR. Но в любом случае у вас есть недоразумение: вам не нужна настройка PHP-сервера для пользователя и пароля SMTP. Это должна быть настройка для каждого приложения (или для каждой страницы). Если вы хотите использовать одну и ту же учетную запись на разных страницах PHP, добавьте ее в какой-нибудь файл settings.php.
Проработав весь день над этим, я наконец нашел решение. Вот как я отправляю из Windows XP с помощью WAMP.
<?php $message = "test message body"; $result = mail('[email protected]', 'message subject', $message); echo "result: $result"; ?>
Ссылка:
Эти ответы устарели и обесценились. Лучшая практика..
composer require phpmailer/phpmailer
Следующее в вашем файле sendmail.php просто требует следующего
# use namespace
use PHPMailer\PHPMailer\PHPMailer;
# require php mailer
require_once "../vendor/autoload.php";
//PHPMailer Object
$mail = new PHPMailer;
//From email address and name
$mail->From = "[email protected]";
$mail->FromName = "Full Name";
//To address and name
$mail->addAddress("[email protected]", "Recepient Name");
$mail->addAddress("[email protected]"); //Recipient name is optional
//Address to which recipient will reply
$mail->addReplyTo("[email protected]", "Reply");
//CC and BCC
$mail->addCC("[email protected]");
$mail->addBCC("[email protected]");
//Send HTML or Plain Text email
$mail->isHTML(true);
$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";
if(!$mail->send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message has been sent successfully";
}
Это можно настроить как угодно..
"SMTP = локальный хост",
"смтп_порт = 25",
"; sendmail_path = ".
Кредит: Как настроить WAMP (localhost ) для отправки электронной почты с помощью Gmail?