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