php从localhost发送邮件

时间:2013-08-17 10:57:56

标签: php email

我是php新手。我试图使用此代码从php发送邮件。

<?php

    $to      = 'sohil@gmail.com';
    $subject = 'The subject';
    $message = 'hello';
    $headers = 'From: sohil@yahoo.in' . "\r\n" .
        'Reply-To: receiver@yahoo.in' . "\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 = sohil@gmail.com

&安培;在sendmail.ini中

# A freemail service example
account Gmail
tls on
tls_certcheck off
host smtp.gmail.com
from sohil@gmail.com
auth on
user sohil@gmail.com
password xxxxxxxxx

# Set a default account
account default : Gmail

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

7 个答案:

答案 0 :(得分: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 = you@yourdomain

如果设置了localhost,它将无效,因此更改为您的邮件服务器。

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

解决方案很少:

  • 如果您有足够的权限,请安装本地邮件服务器
  • 更改您的PHP设置以使用其他邮件服务器(其他打开的邮件服务器或基于身份验证的邮件服务器,如Gmail,Yahoo等)
  • 使用支持IMAP / POP3的可用邮件库之一来处理邮件发送。 SwiftMailer或Pear Mail是最常用的一种。

答案 4 :(得分:0)

尝试在php.ini中设置以下内容,

  1. “SMTP”改为“mail.YourDomain.com”
  2. “smtp_port”改为“25”
  3. 或者您也可以使用php脚本设置此选项,

    //请指定您要使用的邮件服务器或其他邮件服务器。(例如gmail,yahoo)

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

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

    ini_set("smtp_port","25");
    

答案 5 :(得分:0)

这是给我答案的链接:

为Windows&#34;安装&#34;假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"

(忽略&#34;仅限Unix&#34;位,因为我们实际上使用的是sendmail)

然后你必须配置&#34; sendmail.ini&#34;安装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

答案 6 :(得分:0)

过去几周,我在我的centos盒子上遇到了这个问题,为其他人分享了这个问题,而且php中的mail()也没有发送问题......这解决了我所有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