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?的更多相关文章

  1. 【Unity Shaders】学习笔记——SurfaceShader(五)让纹理动起来

    [Unity Shaders]学习笔记——SurfaceShader(五)让纹理动起来 转载请注明出处:http://www.cnblogs.com/-867259206/p/5611222.html ...

  2. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  3. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  4. Stealth视频教程学习笔记(第二章)

    Stealth视频教程学习笔记(第二章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提 ...

  5. 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要三

    最近工作较忙,手上有几个项目等着我独立开发设计,所以平时工作日的时候没有太多时间,下班累了就不想动,也就周末有点时间,今天我花了一个下午的时间来继续总结与整理书中要点,在整理的过程中,发现了书中的一些 ...

  6. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  7. java JDK8 学习笔记——第16章 整合数据库

    第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...

  8. <老友记>学习笔记

    这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...

  9. Kinect开发学习笔记之(一)Kinect介绍和应用

    Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...

随机推荐

  1. 鼓捣phantomjs,做ajax网站的信息采集

    版权所有:http://www.cnblogs.com/zeusro/ 引用不给稿费的,切你jj 准备工作: 1phantomjs的安装 2 phantomjs环境变量的配置 需求: 采集手机淘宝某店 ...

  2. 简易HashMap实现

    为了更好的理解HashMap线程不安全的根源,这里提供了HashMap的简易实现: package map.test; import org.apache.commons.lang3.StringUt ...

  3. java基础之运算符与语句

    一.运算符 1.算数运算符 运算符 名称 举例 + 加法 A等于10,B等于3 则A+B=13 - 减法 A等于10,B等于3 则A-B=7 * 乘法 A等于10,B等于3 则A*B=30 / 除法 ...

  4. java后台工具类-通过交易码获得方法名

    import org.apache.log4j.Logger; import net.sf.json.JSONObject; public class GetResultByTransCode { p ...

  5. JAVA虚拟机的生命周期

    一个运行时的Java虚拟机实例的天职是:负责运行一个java程序.当启动一个Java程序时,一个虚拟机实例也就诞生了.当该程序关闭退出,这个虚拟机实例也就随之消亡.如果同一台计算机上同时运行三个Jav ...

  6. java设计模式-----18、职责链模式

    概念: Chain of Responsibility(CoR)模式也叫职责链模式.责任链模式或者职责连锁模式,是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的 ...

  7. Asp.Net Mvc表单提交(批量提交)

    Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值, 采用form表单提交 name=value类型,只要Action参数的变量名和input的name相同就行 html ...

  8. Linux排查Java程序占用CPU很高的解决办法

    Java的工具集相当强大,学习成本也很低,处理线上问题时,jstack这个工具就比微软的windbg,好学好用很多,3步找出占用CPU很高的源所在.而windbg反人类的各种命令,实在不敢恭维. 故意 ...

  9. 您可能不知道的CSS元素隐藏“失效”以其妙用——张鑫旭

    一.CSS元素隐藏 在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间:有的可以响应点击,有的不能响应点击.后宫选秀——一个一个看. { display: non ...

  10. vmware参数详解

    config.ini - 设置 VMX文件参数 文件configs.ini或config(在Linux中)为所有用户设置参数,或者如果您喜欢 - 为主机设置参数. 如果要为所创建的所有虚拟机使用某些设 ...