2013-08-17 4 views
15

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

<?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 

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

+3

Необходимо установить почтовый сервер на localhost. [PHPMailer] (http://sourceforge.net/projects/phpmailer/) – Bora

+0

@Bora: Я думаю, что можно добавить почтовый сервер gmail или yahoo smtp. Не так ли? –

+0

или использовать удаленный smtp-сервер, такой как GMAIL –

ответ

1

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

0

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

Есть несколько решений:

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

Вы должны изменить файл 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] 

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

+0

Можете ли вы указать что-то для ubuntu или пользователей linux? –

0

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

  1. "SMTP" в "mail.YourDomain.com"
  2. "smtp_port" до "25"

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

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

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

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

ini_set("smtp_port","25"); 
3

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

+1

ссылка в этом комментарии помогла мне настроить мой smtp локально на Mac. благодаря! – surfbird0713

+0

@ surfbird0713 рад узнать, что это вам помогло! :-) –

0

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

Установите «фальшивый 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» немного, так как мы на самом деле используют 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 
0

Я имел этот вопрос в последние недели, на мой CentOS коробки, разделяя это для других, также имеющих проблемы с почтой() в PHP не таковой nding ... Это разрешило проблему для всех моих скриптов 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 
Смежные вопросы