php.ini & SMTP= - как передать имя пользователя и пароль
Вопрос
My ISP
учетная запись требует, чтобы я отправил имя пользователя и пароль для исходящих сообщений. SMTP
Почта.
Как мне получить PHP
чтобы использовать это при выполнении php.mail()?
Тот Самый php.ini
файл содержит только записи для сервера (SMTP= )
и From: (sendmail_from= )
.
Решение
PHP mail()
команда не поддерживает аутентификацию.Ваши варианты:
- PHPMailer - программа для отправки сообщений- Учебник
- ГРУША - Учебник
- Пользовательские функции - Смотрите различные решения в разделе примечания: http://php.net/manual/en/ref.mail.php
Другие советы
Я применяю следующие данные к файлу php.ini.он работает нормально.
SMTP = smtp.example.com
smtp_port = 25
username = info@example.com
password = yourmailpassord
sendmail_from = info@example.com
Эти сведения те же, что и в настройках Outlook.
Использование Поддельная электронная почта для Windows для отправки почты.
- Создайте папку с именем
sendmail
вC:\wamp\
. - Извлеките эти 4 файла в
sendmail
папка:sendmail.exe
,libeay32.dll
,ssleay32.dll
иsendmail.ini
. - Затем настройте
C:\wamp\sendmail\sendmail.ini
:
smtp_server=smtp.gmail.com smtp_port=465 auth_username=user@gmail.com auth_password=your_password
Вышесказанное будет работать с учетной записью Gmail.А затем настройте php.ini:
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"
Теперь перезапустите Apache, и это, по сути, все, что вам нужно сделать.
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 = you@yourserver.com
Я предпочитаю PHPMailer - программа для отправки сообщений инструмент, поскольку для него не требуется ГРУША.Но в любом случае, у вас возникло недопонимание:вам не нужны настройки для всего PHP-сервера для пользователя SMTP и пароля.Это должна быть настройка для каждого приложения (или для каждой страницы).Если вы хотите использовать одну и ту же учетную запись на разных PHP-страницах, добавьте ее в какой-нибудь файл settings.php.
Проработав над этим весь день, я, наконец, нашел решение.Вот как я отправляю из Windows XP с помощью WAMP.
- Используйте SMTP-сервер Google.Вероятно, вам нужна учетная запись.
- Скачать и установить Поддельная отправка электронной почты.Я просто скачал его, распаковал и поместил в папку WAMP.
- Создайте тестовый PHP-файл.Смотрите ниже.
<?php $message = "test message body"; $result = mail('recipient@some-domain.com', 'message subject', $message); echo "result: $result"; ?>
- Обновите ваш файл php.ini и файл sendmail.ini (sendmail.ini находится в папке sendmail).
- Проверьте файл error.log в папке sendmail, которую вы только что создали, если он не работает.
Ссылка:
- Установите Postfix (совместимый с Sendmail).
- Редактировать
/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 будет запускать mail как обычно с sendmail -t -i
command и Postfix перехватят его и передадут на ваш SMTP-сервер, который вы предоставили.
Используйте Mail::factory в упаковке Mail PEAR. Пример.
Эти ответы устарели и обесценились.Лучшая практика..
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 = "from@yourdomain.com";
$mail->FromName = "Full Name";
//To address and name
$mail->addAddress("recepient1@example.com", "Recepient Name");
$mail->addAddress("recepient1@example.com"); //Recipient name is optional
//Address to which recipient will reply
$mail->addReplyTo("reply@yourdomain.com", "Reply");
//CC and BCC
$mail->addCC("cc@example.com");
$mail->addBCC("bcc@example.com");
//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";
}
Это можно настроить так, как вам нравится..
Рассматривая один ответ в этот вопрос, В PHP 4 пакет PEAR Mail обычно уже установлен, и в этом действительно простом руководстве показано несколько строк кода, которые вам нужно добавить в ваш php-файл http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm
- Установите последнюю версию Почтовый сервер."Запустите hMailServer Administrator" на последнем шаге.
- Подключитесь к "localhost".
- "Добавить домен..."
- Установите "127.0.0.1." в качестве "Домена", нажмите "Сохранить".
- "Настройки" > "Протоколы" > "SMTP" > "Доставка электронной почты"
- Установите "localhost" в качестве "Имени локального хоста"., укажите свои данные в разделе "SMTP Relayer"., нажмите "Сохранить".
- "Настройки" > "Дополнительно" > "Диапазоны IP-адресов" > "Мой компьютер"
- Отключите флажок "Внешнее для внешних адресов электронной почты" в группе "Требовать SMTP-аутентификацию".
- Если вы изменили php.ini, перепишите эти 3 значения:
"SMTP = локальный хост",
"smtp_port = 25",
"; sendmail_path = ".
Кредит: Как настроить WAMP (localhost) для отправки электронной почты с помощью Gmail?