php发送邮件二种方法 php使用smtp发送邮件
本文介绍了php发送邮件的两种方法,分别是使用PHP内置的mail()函数发送邮件,使用封装SMTP协议的邮件类发送邮件,推荐使用smtp协议封装的邮件类实现邮件发送。
php如何发送邮件呢?方法有很多,但用的最多的还是使用smtp协议来发送邮件,一起来学习下吧。
专题推荐:php发邮件代码大全
一、使用php内置的mail()函数
$to = "test@163.com"; //收件人
$subject = "Test"; //主题
$message = "This is a test mail!"; //正文
mail($to,$subject,$message);
直接报错:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() inD:/www/Zend/email/email.php on line 10
本地需要有smtp服务器,代码修改为:
$to = "test@163.com";//收件人
$subject = "Test";//邮件主题
$message = "This is a test mail!";//邮件正文
ini_set('SMTP','smtp.163.com');//发件SMTP服务器
ini_set('smtp_port',25);//发件SMTP服务器端口
ini_set(' sendmail_from',"admin@163.com");//发件人邮箱
mail($to,$subject,$message);
继续错误:
Warning: mail() [function.mail]: SMTP server response: 553 authentication is required,smtp2,DNGowKD7v5BTDo9NnplVBA--.1171S2 1301220947 inD:/www/Zend/email/email.php on line 9
需要验证信息,怎么写验证信息呢?在哪里配置呢?
使用mail()函数发送邮件就必须要有一台无需SMTP验证就可以发信的邮件服务器。但现在的SMTP邮件服务器基本上都是需要验证的,所以要想使用它发邮件就只能自己在本地搭一个不需要验证的SMTP服务器。
结论:使用mail()函数发送邮件,就必须要有一台不需要验证的SMTP服务器。
二、使用封装SMTP协议的邮件类
建议使用SMTP协议来发送邮件。
比较推荐使用PEAR扩展中的Mail类,功能强大:可以支持纯文本、HTML格式的邮件;各字段都可设置编码,正确配置不会出现中文乱码情况;可以支持附件等等。
在服务器可以使用 pear install Mail 命令快速安装,没有足够服务器权限的同学也可以直接下载类的PHP源码包含进来就可以了。
注:Mail类依赖 Net/SMTP.php 和 Mail/mime.php ,要一块下载,使用时一块包含进来。
详细安装方法可以在官网查看,http://pear.php.net/package/Mail。
例子,Mail类发送邮件的方法。
// Pear Mail 扩展
require_once('Mail.php');
require_once('Mail/mime.php');
require_once('Net/SMTP.php');
$smtpinfo = array();
$smtpinfo["host"] = "smtp.163.com";//SMTP服务器
$smtpinfo["port"] = "25"; //SMTP服务器端口
$smtpinfo["username"] = "username@163.com"; //发件人邮箱
$smtpinfo["password"] = "password";//发件人邮箱密码
$smtpinfo["timeout"] = 10;//网络超时时间,秒
$smtpinfo["auth"] = true;//登录验证
//$smtpinfo["debug"] = true;//调试模式
// 收件人列表
$mailAddr = array('receiver@163.com');
// 发件人显示信息
$from = "Name <username@163.com>";
// 收件人显示信息
$to = implode(',',$mailAddr);
// 邮件标题
$subject = "这是一封测试邮件";
// 邮件正文
$content = "<h3>随便写点什么</h3>";
// 邮件正文类型,格式和编码
$contentType = "text/html; charset=utf-8";
//换行符号 Linux: \n Windows: \r\n
$crlf = "\n";
$mime = new Mail_mime($crlf);
$mime->setHTMLBody($content);
$param['text_charset'] = 'utf-8';
$param['html_charset'] = 'utf-8';
$param['head_charset'] = 'utf-8';
$body = $mime->get($param);
$headers = array();
$headers["From"] = $from;
$headers["To"] = $to;
$headers["Subject"] = $subject;
$headers["Content-Type"] = $contentType;
$headers = $mime->headers($headers);
$smtp =& Mail::factory("smtp", $smtpinfo);
$mail = $smtp->send($mailAddr, $headers, $body);
$smtp->disconnect();
if (PEAR::isError($mail)) {
//发送失败
echo 'Email sending failed: ' . $mail->getMessage()."\n";
}
else{
//发送成功
echo "success!\n";
}
php发送邮件二种方法 php使用smtp发送邮件相关推荐
- debian7更换gcc版本的二种方法分享
debian7更换gcc版本的二种方法分享 最近在编译qt,之前用的是debian6,gcc版本是gcc-4.4,当使用debian7时,编译遇到了很多跟debian6不一样的问题,debian7的默 ...
- mysql远程连接数据库的二种方法_mysql 远程连接数据库的二种方法
mysql 远程连接数据库的二种方法 一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口"3306",用户名为"roo ...
- oracle 数据导入 mysql_oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)...
这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...
- oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)
这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...
- java获取当前日期和时间的二种方法分享
有两种方法: 方法一:用java.util.Date类来实现,并结合java.text.DateFormat类来实现时间的格式化,看下面代码: import java.util.*; import j ...
- mysql远程连接数据库的二种方法_mysql 远程连接数据库的二种方法 | 速光网络博客...
一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口"3306",用户名为"root",密码"123 ...
- asp教程连接sql server数据库教程二种方法
asp教程连接sql server数据库教程二种方法 ,sql server ole db连接方法:,本人链接sql2012已经成功,想可以帮助大家 本教程主要是讲了asp与mssql server ...
- python二叉树广度遍历_黄哥Python: 二叉树的广度优先搜索的二种方法
特别提示,转行的朋友,2019年不学习数据结构和算法,不刷Leetcode 等面试题库,是找不到程序员工作或者说找不到好的工作.黄哥:黄哥Python:提醒要转行当程序员的朋友,学习要分先后主次zh ...
- Unity UGUI 之 实现 Text 文本文字过长,省略号显示(TextMeshPro 和常规 Text 二种方法)
Unity UGUI 之 实现 Text 文本文字过长,省略号显示(TextMeshPro 和常规 Text 二种方法) 目录 Unity UGUI 之 实现 Text 文本文字过长,省略号显示(Te ...
最新文章
- 美国五大科技巨头的人工智能竞赛
- swift - label 的font 设置 文字字体和大小
- 考研计算机网络比较难还是数据结构,2015考研:历年计算机试卷结构与难度分析...
- JVM进阶之路, 不然又要被面试官吊打了
- UI标签库专题三:JEECG智能开发平台 FormValidation(表单提交及验证标签)
- 前沿 | 使用Transformers进行端到端目标识别
- 第六百二十二天 how can I 坚持
- 航海王启航服务器维护要多久,《航海王启航》7月1日服务器更新维护公告
- 编程基本功:BUG描述不要偷懒,不要误导
- esp32 esp8285 wf6000OTA升级小记
- MongoDB_基本操作
- 锁定计算机和睡眠有什么区别,电脑win7休眠和睡眠有什么区别?
- 7年一回首,流年似水
- labview自动保存报表_Labview如何快速保存数据到Excel
- 20.docker cp从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面
- 数据库公共字段自动填充
- 会汇编语言学c语言好学吗,只有C语言功底的我学习汇编语言可以吗?
- 如何设置potplayer播放器把人声凸显出来并降噪?
- 计算机画图水印怎么可以消除,win10系统使用画图功能去除图片水印的解决步骤...
- 【转载】获得root权限(刷入magisk)
热门文章
- 2021直播电商下半场,“网易严选们”为何成主播良港?
- 【ML特征工程】第 7 章 :通过K-Means 模型堆叠进行非线性特征化
- 三维电子沙盘 数字沙盘GIS开发教程
- 慧尔视:以CRM为抓手,打造用数据说话的企业
- L1-022 奇偶分家(c)
- windows server 硬盘满了怎么清理?
- 改善用户体念:jsp+Ajax实现实时上传,删除,导入Excel进度条
- 星座 member.php,php 通过生日获取对应的星座
- seaborn画分组箱线图
- 吴松计算机学院,IT|“创青春”创业大赛计算机学院选拔赛成功举行!