用XAMPP的sendmail来发邮件(php)
2016-07-26 22:52 yojiaku 阅读(974) 评论(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 文件上写的问题来慢慢改正。