Php отправлять почту с localhost

Я новичок в php. Я пытался отправить почту с php с помощью этого кода.

<?php

    $to      = '[email protected]';
    $subject = 'The subject';
    $message = 'hello';
    $headers = 'From: [email protected]' . "\r\n" .
        'Reply-To: [email protected]' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

    mail($to, $subject, $message, $headers);

?>

У меня есть настройки изменения в php.ini

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = [email protected]

& в sendmail.ini

# A freemail service example
account Gmail
tls on
tls_certcheck off
host smtp.gmail.com
from [email protected]
auth on
user [email protected]
password xxxxxxxxx

# Set a default account
account default : Gmail

Теперь код выполняется успешно, но я не получаю почту.

Ответы

Ответ 1

Вы должны изменить файл php.ini:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = [email protected]

Он не будет работать, если localhost установлен, по этой причине изменитесь на ваш почтовый сервер.

Ответ 2

У вас не будет установлен SMTP-сервер по умолчанию, поэтому вы не сможете напрямую отправлять электронные письма с localhost. Вы можете настроить SMTP-сервер на локальном компьютере или использовать сторонние SMTP-серверы. Посмотрите http://www.mittalpatel.co.in/php_send_mail_from_localhost_using_gmail_smtp, который дает вам представление о том, как отправлять почту с localhost с помощью стороннего SMTP-сервера.

Ответ 3

Функция не будет работать на вашем локальном хосте, поскольку locahost не работает как SMTP-сервер, загружает ваш контент на действительный сервер с установленным SMTP и затем отправляется на почтовый вызов.

Ответ 4

На вашем сервере нет локального почтового сервера.

Существует несколько решений:

  • Установите локальный почтовый сервер, если у вас есть достаточные права.
  • Измените свои настройки PHP, чтобы использовать другой почтовый сервер (другие открытые почтовые серверы или автоответчики, такие как Gmail, Yahoo и т.д.).
  • Используйте одну из доступных почтовых библиотек, которая поддерживает IMAP/POP3 для обработки почты. SwiftMailer или Pear Mail являются наиболее часто используемыми.

Ответ 5

Попробуйте установить ниже в своем php.ini,

  • "SMTP" на "mail.YourDomain.com"
  • "smtp_port" до "25"

ИЛИ вы также можете установить эту опцию, используя php script,

//Укажите свой почтовый сервер другого почтового сервера, который вы собираетесь использовать (например, gmail, yahoo)

ini_set("SMTP","mail.YourDomain.com");

//Укажите, что SMTP-номер 25 и 8889 являются действительными SMTP-портами.

ini_set("smtp_port","25");

Ответ 6

Вот ссылка, которая дает мне ответ:

Установите "поддельный sendmail для окон". Если вы не используете XAMPP вы можете скачать его здесь: http://glob.com.au/sendmail/sendmail.zip

Измените файл php.ini, чтобы использовать его (прокомментировали другие строки):

функция почты

Только для Win32.

SMTP = smtp.gmail.com

smtp_port = 25

Только для Win32.

sendmail_from = <e-mail username>@gmail.com

Только для Unix. Вы также можете указать аргументы

(default: "sendmail -t -i").

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

(игнорируйте бит "Unix only", поскольку мы действительно используем sendmail)

Затем вам нужно настроить файл "sendmail.ini" в каталоге, где был установлен sendmail:

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

Ответ 7

У меня была эта проблема на прошлых неделях, в моих центрах centos, поделившись этим для других, также у меня возникли проблемы с mail() в php, не отправляя... Это разрешило проблему для всех моих скриптов php mail() php.

// Enable the sendmail in selinux
setsebool -P httpd_can_sendmail 1

// Add the following to /etc/postfix/main.cf
relayhost = smtp.server.com

// Then from command line
service postfix restart