php.ini & SMTP = - как вы передаете имя пользователя и пароль - PullRequest
62 голосов
/ 22 сентября 2008

My ISP учетная запись требует, чтобы я отправил имя пользователя и пароль для исходящей SMTP почты.

Как мне заставить PHP использовать это при выполнении php.mail()? Файл php.ini содержит только записи для сервера (SMTP= ) и From: (sendmail_from= ).

Ответы [ 11 ]

40 голосов
/ 22 сентября 2008

PHP mail() команда не поддерживает аутентификацию. Ваши варианты:

  1. PHPMailer - Учебник
  2. PEAR - Учебное пособие
  3. Пользовательские функции - см. Различные решения в разделе заметок: http://php.net/manual/en/ref.mail.php
38 голосов
/ 13 марта 2012

Я применяю следующие данные в файле php.ini. работает нормально.

SMTP = smtp.example.com
smtp_port = 25
username = info@example.com
password = yourmailpassord
sendmail_from = info@example.com

Эти данные такие же, как в настройках Outlook.

17 голосов
/ 20 февраля 2014

Используйте Поддельный sendmail для Windows для отправки почты.

  1. Создать папку с именем sendmail в C:\wamp\.
  2. Извлеките эти 4 файла в папку sendmail: sendmail.exe, libeay32.dll, ssleay32.dll и sendmail.ini.
  3. Затем настройте C:\wamp\sendmail\sendmail.ini:
smtp_server=smtp.gmail.com
smtp_port=465
auth_username=user@gmail.com
auth_password=your_password
  1. Вышеуказанное будет работать с учетной записью Gmail. А затем настройте php.ini:

    sendmail_path = "C: \ wamp \ sendmail \ sendmail.exe -t"

  2. Теперь перезапустите Apache, и это в основном все, что вам нужно сделать.

12 голосов
/ 04 августа 2011

PHP имеет аутентификацию по команде mail!

У меня на 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
5 голосов
/ 27 июня 2015
  1. Установить Postfix (Sendmail-совместимый).
  2. Изменить /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
  1. Создать /etc/postfix/sasl_passwd, ввести:
smtp.server.net username:password
  1. Тип # /usr/sbin/postmap sasl_passwd

  2. Затем запустите: service postfix reload

Теперь PHP будет запускать почту как обычно с помощью команды sendmail -t -i, а Postfix перехватит ее и передаст на ваш SMTP-сервер, который вы указали.

5 голосов
/ 10 марта 2012

Проработав весь день над этим, я наконец-то нашел решение. Вот как я отправляю из Windows XP с WAMP.

  1. Использовать SMTP-сервер Google. Возможно, вам нужен аккаунт.
  2. Скачать и установить Поддельный Sendmail . Я просто скачал, разархивировал и положил в папку WAMP.
  3. Создать тестовый файл PHP. Смотри ниже.
<?php
    $message = "test message body";
    $result = mail('recipient@some-domain.com', 'message subject', $message);
    echo "result: $result";
?>
  1. Обновите файл php.ini и файл sendmail.ini (sendmail.ini находится в папке sendmail).
  2. Проверьте файл error.log в только что созданной папке sendmail, если он не работает.

Справка:

5 голосов
/ 22 сентября 2008

Я предпочитаю PHPMailer инструмент, так как он не требует PEAR. Но в любом случае у вас есть недоразумение: вам не нужны настройки PHP-сервера для пользователя и пароля SMTP. Это должна быть настройка для каждого приложения (или для каждой страницы). Если вы хотите использовать одну и ту же учетную запись на разных страницах PHP, добавьте ее в какой-то файл settings.php.

2 голосов
/ 22 марта 2018

Эти ответы устарели и устарели. Лучшая практика ..

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";
}

Это можно настроить, как вам нравится ..

2 голосов
/ 22 сентября 2008

Используйте Mail :: factory в пакете Mail PEAR. Пример.

0 голосов
/ 15 января 2016
  1. Установите последнюю версию hMailServer . «Запустите hMailServer Administrator» на последнем шаге.
  2. Подключение к "localhost".
  3. "Добавить домен ..."
  4. Установите "127.0.0.1." в качестве «Домена» нажмите «Сохранить».
  5. «Настройки»> «Протоколы»> «SMTP»> «Доставка электронной почты»
  6. Установите «localhost» в качестве «Локального имени хоста», укажите свои данные в разделе «SMTP Relayer» , нажмите «Сохранить».
  7. «Настройки»> «Дополнительно»> «Диапазоны IP-адресов»> «Мой компьютер»
  8. Отключите флажок «Внешние к внешним адресам электронной почты» в группе «Требуется проверка подлинности SMTP».
  9. Если вы изменили php.ini, перепишите эти 3 значения:

"SMTP = localhost",

"smtp_port = 25",

"; sendmail_path =".

Кредит: Как настроить WAMP (localhost) для отправки электронной почты с помощью Gmail?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...