现在的位置: 首页 -> PHP学习 -> PHP源码 -> php利用smtp类轻松的发送电子邮件

php利用smtp类轻松的发送电子邮件

2013-07-31 00:09评论数 261 ⁄ 被浏览 323629 views+

当你还在纠结php内置的mail()函数不能发送邮件时,那么你现在很幸运,此时的这篇文章可以帮助到你!


php利用smtp类来发邮件真是屡试不爽,我用过很久了,基本上没出过问题。本博客后台,当博主回复留言时候,会自动给网友发一封有新回复提示的邮件也是用的本文这个方法实现的。


smtp类发送邮件的方法其实很简单,也很稳定,类是别人已经写好的了,你只需要调用就行了。几行简单的配置就能发邮件,是不是很期待的试一试呢!


以下就是核心代码:


<?php

require_once "Smtp.class.php";

//******************** 配置信息 ********************************

$smtpserver = "smtp.126.com";//SMTP服务器

$smtpserverport =25;//SMTP服务器端口

$smtpusermail = "new2008oh@126.com";//SMTP服务器的用户邮箱

$smtpemailto = $_POST['toemail'];//发送给谁

$smtpuser = "new2008oh";//SMTP服务器的用户帐号(或填写new2008oh@126.com,这项有些邮箱需要完整的)

$smtppass = "您的邮箱密码";//SMTP服务器的用户密码

$mailtitle = $_POST['title'];//邮件主题

$mailcontent = "<h1>".$_POST['content']."</h1>";//邮件内容

$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件

//************************ 配置信息 ****************************

$smtp = new Smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.

$smtp->debug = false;//是否显示发送的调试信息

$state = $smtp->sendmail($smtpemailto, $smtpusermail, $mailtitle, $mailcontent, $mailtype);


echo "<div style='width:300px; margin:36px auto;'>";

if($state==""){

echo "对不起,邮件发送失败!请检查邮箱填写是否有误。";

echo "<a href='index.html'>点此返回</a>";

exit();

}

echo "恭喜!邮件发送成功!!";

echo "<a href='index.html'>点此返回</a>";

echo "</div>";

?>


完整范例下载:phpmail技术.zip


效果截图欣赏:


填写收件人,标题和内容后提交


返回成功的提示

瞬间便接收到了邮件


本博客所有案例都经过本人亲自测试,方法也绝对简单易懂,希望大家多多支持,有问题可以与我交流!

请记住我,php学习博客

 

文章出自:https://www.daixiaorui.com/read/16.html 本站所有文章,除注明出处外皆为原创,转载请注明本文地址,版权所有。

目前有 260 条评论  @我要评论

  1. 260楼小李 : 2018-10-18 17:35:32 评论说: @回复

    如何在源码中填入 收件人,主题,正文,谢谢在!!

  2. 259楼小李 : 2018-10-18 17:34:10 评论说: @回复

    您好,怎么在源码中填入收件人邮箱,主题,和正文

  3. 258楼dd : 2018-10-14 13:06:53 评论说: @回复

    测试错误,求指点。

  4. 257楼dd : 2018-10-14 13:05:53 评论说: @回复

    date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.

  5. 256楼dd : 2018-10-14 13:05:38 评论说: @回复

    Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the

  6. 255楼nicheng : 2018-10-11 11:48:01 评论说: @回复

    ceshi

  7. 254楼drice : 2018-10-10 17:05:31 评论说: @回复

    本地可以,服务器上测试不可以。。。

  8. 253楼drice : 2018-10-10 14:53:05 评论说: @回复

    亲测一下

  9. 252楼求解 : 2018-09-23 00:42:29 评论说: @回复

    Trying to smtp.163.com:25 Error: Cannot connenct to relay host smtp.163.com Error: Connection timed out (110) 出现这个求解

  10. 251楼hk : 2018-09-13 18:14:40 评论说: @回复

    MAIL FROM: 250 Ok > RCPT TO: 501 Bad address syntax Error: Remote host returned "501 Bad address syntax" Error: Error occurred while sending RCPT TO command. Error: Cannot send email to

  11. 250楼力匠设计 : 2018-09-08 22:05:45 评论说: @回复

    你好请问我的留言也想你的这样有邮箱,但是怎样添加到这个源码上去?

  12. 249楼34537 : 2018-09-06 20:38:12 评论说: @回复

    TH LOGIN MjUzNDAwODkyOQ ==RCPT TO: 501错误的地址语法错误:远程主机返回“501错误的地址语法”错误:发送RCPT TO命令时出错。错误:无法发送电子邮件至与远程主机断开连接

  13. 248楼ywb888 : 2018-08-16 10:54:54 评论说: @回复

    很奇怪,最近我两台机器分别运行这个php,一台正常,另外一台打开调试开关后提示:Trying to smtp.sohu.com:25 Error: Cannot connenct to relay host smtp.sohu.com Error: Invalid argument (22) Error: Cannot send email to 702730136@qq.com

  14. 247楼孔雀 : 2018-08-11 15:17:45 评论说: @回复

    Trying to smtp.163.com:25 Error: Cannot connenct to relay host smtp.163.com Error: Connection timed out (110) Error: Cannot send email to 849980411@qq.com 这个问题是怎么回事啊??

  15. 246楼素材火 : 2018-07-25 10:18:12 评论说: @回复

    经久不衰的实用功能

  16. 245楼ywb888 : 2018-07-09 09:30:58 评论说: @回复

    我是直接使用这个PHP,接收邮箱错误,是因为使用了接收post过来的参数,直接使用是不必这样的,直接填写收件箱就可以了,$smtpemailto = 'toemail@qq.com';

    回复留言标识 小贤 回复 ywb888: 可以请教一下你们。我是PHP小白,不是好懂怎么在提交订单成功后触发邮件发送,求大神加我QQ:1726800251

    2018-07-28 10:25:38  @回复

  17. 244楼花满楼 : 2018-07-04 16:36:48 评论说: @回复

    用了4 次之后就不行了,不知道为什么。有类似的情况吗?

  18. 243楼鹏仔 : 2018-07-03 16:34:07 评论说: @回复

    Authentication failure[0] Error: Remote host returned "526 Authentication failure[0]" 是怎么还是呢

    回复留言标识 鹏仔 回复 鹏仔: 不好意思,是用户名写错了

    2018-07-03 16:44:53  @回复

  19. 242楼鹏仔 : 2018-07-03 16:33:36 评论说: @回复

    Authentication failure[0] Error: Remote host returned "526 Authentication failure[0]"

  20. 241楼jackchan : 2018-06-29 13:53:23 评论说: @回复

    邮件是发送成功了,但是ajax请求出现了Provisional headers are shown的问题,不知道如何解决?

  21. 240楼小谢 : 2018-06-20 10:31:30 评论说: @回复

    Trying to smtp.qq.com:25 220 smtp.qq.com Esmtp QQ Mail Server Connected to relay host smtp.qq.com > HELO localhost 250 smtp.qq.com > AUTH LOGIN eGllbWluZ3dlaTUyMTMxNA== 530

    回复留言标识 小谢 回复 小谢: 这是怎么回事呀

    2018-06-20 10:34:41  @回复

  22. 239楼小谢 : 2018-06-20 10:07:32 评论说: @回复

    我的已提交就显示500内部服务器错误 是什么原因呀

  23. 238楼z5586441 : 2018-06-14 14:46:54 评论说: @回复

    添加的附件的话 需要改动什么吗 还是不能添加附件?

  24. 237楼阿祥 : 2018-06-03 22:18:31 评论说: @回复

    楼主 问一下 为什么在本次测试么有任何问题 为什么上传到服务器就不行了?能告诉我可能是哪些问题吗?

  25. 236楼大神小弟 : 2018-05-27 17:33:17 评论说: @回复

    Gateway Time-out The gateway did not receive a timely response from the upstream server or application. 提示这种错误

  26. 235楼大神小弟 : 2018-05-27 17:32:25 评论说: @回复

    Gateway Time-out The gateway did not receive a timely response from the upstream server or application.用的是QQ的,怎么提示这种错误啊

  27. 234楼浅巷墨漓 : 2018-05-26 12:44:32 评论说: @回复

    我用的QQ邮箱,配置都没错,smtp.qq.com,端口465,密码也是QQ邮箱的授权码,为什么发送的时候显示504 Gateway Timeout

    回复留言标识 大神小弟 回复 浅巷墨漓: 你的解决了没

    2018-05-27 17:45:56  @回复

    回复留言标识 浅巷墨漓 回复 大神小弟: 用163,QQ邮箱不行

    2018-05-28 13:32:01  @回复

    回复留言标识 大神小弟 回复 浅巷墨漓: 我用了163,也不行,不知道咋回事,你方便加我一下不,我请教一下你,QQ:390 766 219

    2018-05-28 13:34:44  @回复

  28. 233楼杨先生 : 2018-05-24 18:08:31 评论说: @回复

    Trying to smtp.163.com:25 Error: Cannot connenct to relay host smtp.163.com Error: Connection timed out (110) Error: Cannot send email to xx@163.com. 这是啥情况。

    回复留言标识 哈哈 回复 杨先生: 你好,你的解决了吗。我和你一样的问题

    2018-07-21 14:30:03  @回复

  29. 232楼aion : 2018-05-22 18:18:16 评论说: @回复

    楼主你好! 知道怎么给SMTP添加回执么?

  30. 231楼123 : 2018-05-20 16:04:51 评论说: @回复

    [EOM]. Error: Cannot send email to Disconnected from remote host

  31. 230楼TANKING : 2018-05-09 11:26:04 评论说: @回复

    通过研究,一次成功! 1、在sendmail.php里面修改好相关的参数 $smtppass = "163邮箱的授权码";//SMTP服务器的用户密码 我用的是163邮箱,在填写SMTP服务器的用户密码地方填的不是登录密码,而是在163邮箱授权开启之后自己设置的一个授权码。 然后就可以正常使用,我是直接在服务器上面测试,没有在本地服务器测试!

  32. 229楼严格 : 2018-04-24 15:30:03 评论说: @回复

    Error: Cannot connenct to relay host ssl://smtp.qq.com Error: (0) Error: Cannot send email to 3540009219@qq.com 这个怎么办

    回复留言标识 Dai 回复 严格: 看php.ini中allow_url_fopen是否为on;另外查看disable_functions中是否禁用了fsock、fsockopen。

    2018-04-24 23:43:06  @回复

  33. 228楼Simba : 2018-04-21 14:22:30 评论说: @回复

    550 Invalid User: Error: Remote host returned "550 Invalid User: " Error: Error occurred while sending RCPT TO command. Error: Cannot send email to Disconnected from remote host 前面的都对了为什么最后还提示550错误

    回复留言标识 Dai 回复 Simba: $smtpuser = "new2008oh";//SMTP服务器的用户帐号(或填写new2008oh@126.com,这项有些邮箱需要完整的)----检查一下用户名($smtpuser)这项是否填写正确,@xxx.com带上和不带上都试试。

    2018-04-22 11:35:44  @回复

    回复留言标识 Simba 回复 Dai: 试过了,还是报错

    2018-04-22 11:44:02  @回复

  34. 227楼我我 我 : 2018-04-12 17:32:46 评论说: @回复

    Trying to smtp.163.com:25 220 163.com Anti-spam GT for Coremail System (163com[20141201]) Connected to relay host smtp.163.com >

  35. 226楼Q772875181 : 2018-04-04 20:30:47 评论说: @回复

    腾讯2016年后出了一堆授权码登陆。这个想用授权码发信?换个账号密码就行了?不行。这次QQ邮箱取消了对未加密的支持!需要强制SSL加密想了半天方案最终把地址改成ssl://smtp.qq.com 成功发信!

  36. 225楼特战队 : 2018-03-07 14:00:55 评论说: @回复

    怎么填加附件

  37. 224楼可爱的小阿天 : 2018-03-04 23:07:12 评论说: @回复

    本地测试失败。总是显示Trying to smtp.qq.com:465 Error: Remote host returned "" Error: Cannot connenct to relay host smtp.qq.com Error: (0) Error:求解。

  38. 223楼cjx : 2018-03-02 11:06:25 评论说: @回复

    看看

  39. 222楼小白 : 2018-02-11 17:55:10 评论说: @回复

    发送成功但是被QQ邮箱放到垃圾邮箱去了是什么原因??

    回复留言标识 kk 回复 小白: 你的项目上线了吗?是在线上发的不

    2018-02-28 22:45:09  @回复

  40. 221楼如何解决? : 2018-02-02 14:58:33 评论说: @回复

    Trying to smtp.qq.com:465

您的每一个评论都是对我的一份支持

 博客二维码

昵称 *

邮箱 *