2013-08-17 135 views
15

我是新的PHP。我试图使用此代码从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 

更改设置现在的代码成功运行,但我没有收到任何邮件。

+3

您必须在本地主机上安装邮件服务器。 [PHPMailer](http://sourceforge.net/projects/phpmailer/) – Bora

+0

@Bora:我认为可以添加Gmail或雅虎smtp邮件服务器。不是吗? –

+0

或使用远程SMTP服务器,如GMAIL – 2013-08-17 11:00:16

回答

1

该功能在您的本地主机上不起作用,因为locahost不能用作SMTP服务器,请将您的内容上传到安装了SMTP的有效服务器,然后进行邮件调用。

0

您的服务器没有本地邮件服务器。

有几个解决方案:

  • 安装本地邮件服务器,如果你有足够的权限
  • 更改您的PHP设置使用其他邮件服务器(其他开放邮件服务器或身份验证为基础的人,如Gmail,雅虎等)
  • 使用支持IMAP/POP3的可用邮件库之一来处理邮件发送。 SwiftMailer或梨形邮件是最常用的之一。
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脚本设置此选项,

//请指定您的邮件服务器或您要使用的其他邮件服务器(例如Gmail,雅虎)

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

//请指定一个SMTP号码25和8889是有效的SMTP端口。

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

默认情况下,您不会安装SMTP服务器,因此您无法直接从本地主机发送电子邮件。您可以在本地设置SMTP服务器,也可以使用第三方SMTP服务器。 看看http://www.mittalpatel.co.in/php_send_mail_from_localhost_using_gmail_smtp可以让你了解如何使用第三方SMTP服务器从本地主机发送邮件。

+1

此评论中的链接帮助我在Mac上本地设置了我的smtp。谢谢! – 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 
相关问题