代码改变世界

用XAMPP的sendmail来发邮件(php)

2016-07-26 22:52  yojiaku  阅读(956)  评论(0编辑  收藏  举报

今天,我在练习《PHP & MySQL Web Development》第四章的例子(发邮件)时遇到了这样的问题:

Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() inC:\xampp\htdocs\fourCapture\processfeedback.php on line 19,即在主机25端口,不能连接到邮件服务器,请核实您的SMTP(邮件传输协议).

我这里用网易126邮箱举例

第一步:配置php.ini(打开C:\xampp\php\php.ini 文件中[mail function]板块)

[mail function]

SMTP = smtp.126.com

smtp_port = 25

sendmail_from = xxx@126.com (你的邮箱)

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

第二步:配置sendmail.ini (打开C:\xampp\sendmail\sendmail.ini 文件)

[sendmail]

smtp_server = smtp.126.com

smtp_port = 25

default_domain=126.com

error_logfile=error.log

debug_logfile=debug.log

auth_username=xxx@126.com (你的邮箱)

auth_password=xxxx (你的邮箱密码)

force_sender=xxx@126.com (你的邮箱)

 

注意:smtp_server=smtp服务器【可以选择本地搭建(localhost),也可以选择163、QQ、gmail的smtp或者pop3服务器】。

     第一次使用建议把debug_logfile和debug.log前面的“;”去掉,如果发生错误可以在error.log里面找到错误原因。

     auth_username=、auth_password=stmp账户信息(即邮箱和邮箱密码),如果是pop3则对应填写。

 第三步:重启Apache

 第四步:写个php程序测试一下:

$now = date('Y-m-d h:i:s');
$from_name = 'Yojiaku';//你的名字
$from_email = 'xxx@xxx.com'; //你用来发邮件的邮箱,即你刚刚在sendmail.ini中填写的邮箱
$headers = "From: $from_name ";
$to = 'xxx@xx.com';  //收件人邮件地址
$body = "hello!这是一份来自 $from_name 的测试邮件 .";
$subject = "[$now] 测试邮件发送";
if (mail($to, $subject, $body, $headers)) {
    echo '发送成功!';
} else {
    echo '发送失败,去debug.log或者error.log文件中查找错误原因';
}

 如果发信成功就说明sendmail已经生效,如果没有成功可以查看C:\xampp\sendmail\error.log 和C:\xampp\sendmail\debug.log 文件上写的问题来慢慢改正。