PHP实现邮件发送的方法
2018-02-02 09:30
411 查看
这里简要介绍一下在PHP语言中实现邮件发送的两种方法,分别是使用socket发送和使用mail()函数发送的方式。
1.使用socket发送原理:使用fsockopen函数打开一个Internet连接,函数的参数列表为fsockopen(string hostname,int port,int [errno],string [errstr],int [timeout]),这里由于要使用SMTP协议,所以端口号是25.在打开连接成功后,会返回一个socket句柄,使用它就可以像使用文件句柄一样,可使用的操作有fputs(),fgets(),feof(),fclose()等。该函数的返回值有以下几种:
220 服务就绪(在socket连接成功时,会返回此信息)
221 正在处理
250 请求邮件动作正确
354 开始发送数据
500 语法错误,命令不能识别
550 命令不能执行,邮箱无效
552 中断处理:用户超出文件空间
但是,需要注意的是使用socket发送要保证开启php的fsockopen()函数,你可能需要:
php.ini文件中查找allow_url_fopen = On 确保该项值为On
php.ini文件中查找;extension=php_openssl.dll 如果前面有分号,去掉分号
重启web服务器,apache或IIS
这里有个开源的发送邮件类可供直接发送邮件,使用的是socket发送原理,亲测可用,供大家参考:sendmail.zip
2.使用mail()函数发送:mail()函数是PHP语言自带的一个邮件发送函数,但是并不代表使用它可以直接进行邮件发送,需配置php.ini邮件信息、需要类似sendmail这样的组件支持。
(1)下载sendmail软件(如果你是用xampp,那里面直接就带了),下载地址:http://www.glob.com.au/sendmail/,解压到D盘,供下列步骤(2)中的sendmail.path填写
(2)配置php.ini,需配置内容如下:
[mail function]; For Win32 only.SMTP = localhostsmtp_port = 25; For Win32 only.sendmail_from = 417204900@qq.com; For Unix only. You may supply arguments as well (default: "sendmail -t -i").sendmail_path ="D:/sendmail/sendmail.exe -t -i"
(3)配置sendmail.ini,需配置内容如下:
smtp_server=smtp.qq.comsmtp_port=25smtp_ssl=autoerror_logfile=error.logdebug_logfile=debug.logauth_username=yourname such as 12@qq.comauth_password=yourpassword such as 123456pop3_server=pop3_username=pop3_password=
smtp_server=,这个需要填写你想选用的smtp服务器,可以选择本地搭建,也可以选择163、QQ、gmail(如果是gmail需要服务器启用ssl_module modules)的smtp或者pop3服务器。注意第一次使用建议把debug_logfile=debug.log前面的;去掉,这样可以记录每次发送邮件的具体信息了,如果发生错误可以在error.log里面找到。auth_username=、auth_password=需要填写你的stmp账户信息(具体可以Google一下),如果是pop3则对应填写。填写一类就可以了。
(4)测试代码
<?$now = date("Y-m-d h:i:s");$from_name='IECspace';$from_email ='417204900@qq.com';$to='764739533@qq.com';$headers = "From: <$from_name>";$message= "这是一封来自 <$from_email>的测试邮件.";$subject = "[$now] 邮件测试";if (mail($to, $subject,$message,$headers)) {echo "success!";} else {echo "fail…";}?>
3.另一个开源邮件发送包:PHPMailer,下载地址:http://sourceforge.net/projects/phpmailer/files/。下载完成后,直接查看里面的example文件夹,有各种例子
相关文章推荐
- php使用SAE原生Mail类实现各种类型邮件发送的方法
- 最新PHP实现SMTP发送邮件的方法
- php mailer类调用远程SMTP服务器发送邮件实现方法
- phpmailer 实现邮件发送功能方法
- PHP实现发送邮件的方法(基于简单邮件发送类)
- PHP实现通过get方式识别用户发送邮件的方法
- PHP实现发送邮件的方法(基于简单邮件发送类)
- PHP实现通过get方式识别用户发送邮件的方法
- php基于socket实现SMTP发送邮件的方法
- PHP实现发送邮件的方法(基于简单邮件发送类)
- php mailer类调用远程SMTP服务器发送邮件实现方法
- php基于socket实现SMTP发送邮件的方法
- PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
- 使用PHP发送邮件的两种方法
- C#邮件发送的实现方法
- php发送邮件(方法一)
- PHP的mail函数实现邮件发送
- 深入Lumisoft.NET实现邮件发送功能的方法详解
- PHP中发送邮件的几种方法总结
- php发送邮件方法二1.(SMTP传输SMTP类)