php.ini & SMTP= - как передать имя пользователя и пароль

StackOverflow https://stackoverflow.com/questions/112190

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

  1. PHPMailer - программа для отправки сообщений- Учебник
  2. ГРУША - Учебник
  3. Пользовательские функции - Смотрите различные решения в разделе примечания: 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 для отправки почты.

  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, и это, по сути, все, что вам нужно сделать.

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.

  1. Используйте SMTP-сервер Google.Вероятно, вам нужна учетная запись.
  2. Скачать и установить Поддельная отправка электронной почты.Я просто скачал его, распаковал и поместил в папку 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, которую вы только что создали, если он не работает.

Ссылка:

  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 будет запускать 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

  1. Установите последнюю версию Почтовый сервер."Запустите 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 = локальный хост",

"smtp_port = 25",

"; sendmail_path = ".

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top