PHP学习笔记一:谁动了你的mail(),PHP?
PHP编写邮件发送的函数时候,会出现一个很奇怪的问题,那就是:
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() in .......
of course,这个红色不是网页上显示的,只是爲了这样说明,不过你可以设置显示的颜色,这个嘛,这个要留给你考究了。
通过internet搜索了相关的回答,包括相关的技术博客,大家都是很简单的阐述了解决方案.大多是只是提到修改:php.ini 中的[mail function] 函数,将smtp的相关功能进行打开即可,以下是详细的修改:
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_from = youremailUsual@domin.com
;这裡有必要注释下,这个邮件是From方面.
sendmail_path = ""
;起初是空的,这裡在后面做说明.
mail_add_x_header = on
;这裡是默认on的 无需更改
到这一步,修改完毕,重启apache,当然这个操作,我实在CMD下操作的,话说这个操作,还闹了一个小笑话.How stupid i am !
重启完毕,刷新页面,错误仍然存在.
这裡陷入纠结的地步,stackoverflow 中提到了IIS(windows 默认的服务器),在控制面板-管理工具下竟然找不到这一项,由于是win7的缘故,在添加和删除程序下,把它开启即可,注意操作,后来可以在管理工具下找到,双击打开,此时看到smtp的项都很激动.双击打开,配置了相关的参数,如截图所示:
更正:此处忘了补发图片,特此道歉! 7-5号补正.进行在线转换

说句实话,这一步做的比较脑残,那上面是ASP.net的选项,管你PHP毛事.[反正就是没有成功].
痛定思痛,维基百科查了smtp的协议详细解释,连接Click Here:简单邮件协议
回来继续修改,[mail function],如下:
;以126邮箱的设置为例子
SMTP = smtp.126.com
smtp_port = 25
sendmail_from = my126EmailAddress@126.com
sendmail_path = ""
mail_add_x_header = on
同时修改了程序中$from变量的数值,为了保持一致.
[因为之前做了测试,程序中添加 phpinfo()函数,执行后,在页面搜索 mail项,你会发现会有一个 Localhost Value 和 master Value ,当然这个很好理解,Localhost Value指的是你程序中设置的数值,master Value是php.ini的设置]
执行后,神奇的错误消失了,不过出现了如下的错误:
mail(): SMTP server response: 553 You are not authorized to send mail, authentication is required aaf353e4-8ac5-416e-9cd5-6b54fc592764
之后改了其他的邮箱,如QQ,Gamil等,错误都如上面提示,看了一个熟悉的单词authorized ,就明白啥意思了.
到这一步貌似离成功不远了,想起以前使用客户端配置邮箱用户的时候,最后一步都会询问你是不是需要开启"服务器身份验证".最后一不小心搜到了一个叫做sendmail的文件包,下载地址如下:sendmail
之后,最好在PHP的根目录下新建一个文件夹,取名叫做:sendmail,之后托压缩包进去,再解压出来,修改一个叫做sendmail.ini的文件,修改的地方如下:
;take the fomus email provider in China 126 for example
[sendmail]
smtp_server= smtp.126.com
smtp_port=25
default_domin =126.com
auth_username= strings in your email address before char '@'
auth_password= your password which allow you to login in your email-box
hostname= 126.com
之后,你就要修改 php.ini,还是老地方:
SMTP = smtp.126.com
;这裡修改为localhost 也是一样,其他选项保持不变.
smtp_port = 25
sendmail_from = my126EmailAddress@126.com
sendmail_path = "your sendmail path/sendemail.exe -t "
;当然这个路径的前半部分必须包括你的PHP安装的根目录,将"\"换成"/",我想是必须要做的.
mail_add_x_header = on
到这裡配置完成,重启你的apache,刷新页面,错误的消失,因为程序中设置的$to是自己的126和QQ邮箱,当然循环发的.
当看到桌面右下角QQ上弹出三丰邮件提示的时候,I know that I resolve it .打开邮件的内容,和我在页面输入的内容完全一致,而且有些内容还是从本地的数据库中读出来的。

PHP学习笔记一:谁动了你的mail(),PHP?的更多相关文章
- 【Unity Shaders】学习笔记——SurfaceShader(五)让纹理动起来
[Unity Shaders]学习笔记——SurfaceShader(五)让纹理动起来 转载请注明出处:http://www.cnblogs.com/-867259206/p/5611222.html ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- Stealth视频教程学习笔记(第二章)
Stealth视频教程学习笔记(第二章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提 ...
- 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要三
最近工作较忙,手上有几个项目等着我独立开发设计,所以平时工作日的时候没有太多时间,下班累了就不想动,也就周末有点时间,今天我花了一个下午的时间来继续总结与整理书中要点,在整理的过程中,发现了书中的一些 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- java JDK8 学习笔记——第16章 整合数据库
第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...
- <老友记>学习笔记
这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...
- Kinect开发学习笔记之(一)Kinect介绍和应用
Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...
随机推荐
- 【转】java线程池
一简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之后加入了java.util. ...
- vue+SSM验证码实现
源码:https://github.com/HannahLihui/StudentManager-SSM/tree/master/SSM-git/StudentManager-SSM-master 1 ...
- MYSQL与MSSQL对比学习
最近在将公司的一个产品里面相关的MSSQL语句修改为可以在MYSQL上执行的语句 l 优点分析: MYSQL短小精悍,容易上手,操作简单,免费供用的.相对其它数据库有特色又实用的语法多一些.SQL怎 ...
- 高并发第九弹:逃不掉的Map --> HashMap,TreeMap,ConcurrentHashMap
平时大家都会经常使用到 Map,面试的时候又经常会遇到问Map的,其中主要就是 ConcurrentHashMap,在说ConcurrentHashMap.我们还是先看一下, 其他两个基础的 Map ...
- Android开发之旅2:HelloWorld项目的目录结构
引言 前面Android开发之旅:环境搭建及HelloWorld,我们介绍了如何搭建Android开发环境及简单地建立一个HelloWorld项目,本篇将通过HelloWorld项目来介绍Androi ...
- MangoDB的C#驱动库(.net framewokr 4.0)
编写运维工具,需要联接MangoDB 基于我陈旧的技术栈,就用c#开发了 驱动库下载地址记录到至此,需要的可以下载 注意,此驱动是老版本的,只支持.net framewokr 4.0 看了半天,觉得够 ...
- ASP.NET MVC 简单分页代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 前端学习之HTML(1)
HTML标签学习 2018-10-31 记录一下学习的网站 http://www.w3school.com.cn http://www.runoob.com/ <!DOCTYPE html> ...
- @Secured()、 @PreAuthorize() 、 @RolesAllowed()
在Spring security的使用中,为了对方法进行权限控制,通常采用的三个注解,就是@Secured().@PreAuthorize().@RolesAllowed(). 示例,修改用户密码必须 ...
- Oracle EBS PO退货失败
无法读取例程 &ROUTINE 中配置文件选项 INV_DEBUG_TRACE 的值. 系统-配置文件-地点层 INC%调试%踪 是 select * from po_interface_e ...