PHP邮件接收与发送类实现程序详解
主要的改进如下:
1、新增了listMessages方法,用于列表邮件列表,且带有分页功能,更加方便调用
/**
* listMessages - 获取邮件列表
* @param $page - 第几页
* @param $per_page - 每页显示多少封邮件
* @param $sort - 邮件排序,如:array('by' => 'date', 'direction' => 'desc')
* */
function listMessages($page = 1, $per_page = 25, $sort = null){}
2、新增了两个编码转换的方法,主要用于对邮件的相关信息进行编码转换。
调用方法如下:
代码如下 | 复制代码 |
include("receivemail.class.php"); 运行结果大致如下: Array [total] => 47
|
receivemail.class.php类文件
代码如下 | 复制代码 |
<?php $mail_header=imap_header($this->marubox,$mid); $headers=imap_headers($this->marubox); function GetAttach($mid,$path) // Get Atteced File from Mail $struckture = imap_fetchstructure($this->marubox,$mid); imap_close($this->marubox,CL_EXPUNGE); |
面是一个php邮件发送的类的一个函数。
代码如下 | 复制代码 |
function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "") if($mailtype=="HTML"){ $header .= "To: ".$to."rn"; if ($cc != "") { $header .= "From: 报名邮件.<".$from.">rn"; $header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">rn"; $TO = explode(",", $this->strip_comment($to)); if ($cc != "") { if ($bcc != "") { $sent = TRUE; foreach ($TO as $rcpt_to) { if (!$this->smtp_sockopen($rcpt_to)) { if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $utfheader, $body)) { fclose($this->sock); $this->log_write("Disconnected from remote hostn"); |
我们如何调用这个类呢?
再看示例
代码如下 | 复制代码 |
include("sendmail.php");//发送邮件类 $smtpemailto = "dianzhong@126.com";//发送给谁 $utfmailbody = iconv("UTF-8","GB2312",$mailbody);//转换邮件编码 |
在这里需要一个smtp服务器。我们可以注册一个126的邮箱。 在上面的代码中,修改成你自己注册的邮箱地址和用户名、密码即可。
phpmailer发送邮件功能很强大,今天真正的体验一下,简单说一下配置,本人是在thinkphp中是用的
配置步骤:
1.后台配置发送邮件类,位置admin/common/common.php
中
代码如下 | 复制代码 |
function sendmail($tomail,$title,$content) /*邮件设置信息*/ Vendor('phpmailer.class#phpmailer'); $mail->CharSet ="UTF-8";//设定邮件编码 } |
2:配置文件中配置参数:
代码如下 | 复制代码 |
/*邮件设置*/ |
3.测试发送代码:
代码如下 | 复制代码 |
sendmail(’11234@126.com‘,‘您好’,‘我是内容’); |
PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括:
*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址
*.支持多种邮件编码包括:8bit,base64,binary和quoted-printable
*.支持SMTP验证
*.支持冗余SMTP服务器
*.支持带附件的邮件和Html格式的邮件
*.自定义邮件头
*.支持在邮件中嵌入图片
*.调试灵活
*.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等
*.可运行在任何平台之上
邮件发送实例
代码如下 | 复制代码 |
<?php require("PHPMailer/class.phpmailer.php"); require("PHPMailer/class.smtp.php"); $mail=new PHPMailer(); // 设置PHPMailer使用SMTP服务器发送Email $mail->IsSMTP(); // 设置邮件的字符编码,若不指定,则为'UTF-8' $mail->CharSet='UTF-8'; // 添加收件人地址,可以多次使用来添加多个收件人 $mail->AddAddress('*********@qq.com'); // 设置邮件正文 $message='<B>这是一封测试邮件</B>'; $mail->Body=$message; // 设置邮件头的From字段。 // 对于网易的SMTP服务,这部分必须和你的实际账号相同,否则会验证出错。 $mail->From='****@163.com'; // 设置发件人名字 $mail->FromName='yourname'; // 设置邮件标题 $mail->Subject='邮件测试'; // 设置SMTP服务器。这里使用网易的SMTP服务器。 $mail->Host='smtp.163.com'; // 设置为“需要验证” $mail->SMTPAuth=true; // 设置用户名和密码,即网易邮件的用户名和密码。 $mail->Username='****'; $mail->Password='****'; // 发送邮件。 $mail->Send(); ?> |
phpmailer发邮件常见的一些问题总结
PHPMailer邮件类使用错误分析
一,没有定义发送邮箱$mail->From或格式不正确,错误提示:Language string failed to load: recipients_failed test@test.com,注意,这个配置一定要正确,而且是正确的邮箱
二,没有定义邮件服务主机$mail->Host或连接失败,错误提示:Language string failed to load: connect_host
三,没有定义发送邮箱$mail->AddAddress或邮箱格式不正确,错误提示:Language string failed to load: provide_address
四,没有定义邮箱发送用户名$mail->Username,错误提示:Language string failed to load: connect_host
五,没有定义邮箱发送密码$mail->Password,错误提示:Language string failed to load: connect_host,这类错误非常明显,一般都是邮箱服务器配置不正确不能边接。
六,邮件正文编码,如果发送HTML邮件,需要定义正确的编码格式和字符,发送GBK邮件如下:
代码如下 | 复制代码 |
$mail->IsHTML ( true ); 是否支持HTML邮件 $mail->CharSet = "GB2312"; 字符设置 $mail->Encoding = "base64"; 编码方式 |
我们先来介绍格式
代码如下 | 复制代码 |
$Jmail = new com("Jmail.Message"); //实例化一个Jmail对象 |
例1
代码如下 | 复制代码 |
<?php 成一样的就可以了 |
比如我们要发送的附件是“测试.txt”,如果在添加附件的时候强制使用指定文件名的方式:
$mail->AddAttachment($attach, $attach);
那么发送过去的附件文件名将会是乱码,如果不指定:
$mail->AddAttachment($attach, $attach);
那么发送过去的文件名中的中文干脆没了,成了“.txt”。
解决办法
打开class.phpmailer.php,在大概第1007行左右,函数AddAttachment中,有一句
代码如下 | 复制代码 |
//$filename = basename($path); |
解决办法二
如果想设置文件名为中文,则在调用AddAttachment时提供中文的name参数(第二个参数)。
比如
代码如下 | 复制代码 |
$mail->AddAttachment(‘temp/2011/test.rar’, ‘测试.rar’); |
其它问题:发送中文邮件的时候,中文会出现乱码
我看了一下源码,乱码的产生大概是在将邮件标题转成几个小的=?utf-8?B?...?=时,可能是无意中把中文给截断了产生的,所以我的修改更简单而又略微温柔一点,修改第1185行:
代码如下 | 复制代码 |
$maxlen = 75 - 7 - strlen($this->CharSet); |
相关文章
- 这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
- 本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
- 这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
- 本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
- 大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
- 这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
- 这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
- 本文给大家介绍的是nodejs实现使用阿里大鱼短信API发送消息的方法和代码,有需要的小伙伴可以参考下。...2016-01-20
将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文
时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
- 这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
- 这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
- 这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
- mail()函数的作用:连接到邮件服务器,利用smtp协议,与该服务器交互并投邮件。注意:1、mail函数不支持esmtp协议,---即,只能直投,不能登陆2、由上条,我们只能直投至最终的收件服务器地址.而该地址,又是在PHP.ini中指定的,所...2015-10-30
- 这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法:一、使用PHP内置的mail()函数<?php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; //正文...2015-10-30
- 这篇文章主要为大家详细介绍了微信小程序实现点击导航条切换页面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-11-19
- 这篇文章主要介绍了微信小程序手势操作之单触摸点与多触摸点的相关资料,需要的朋友可以参考下...2017-03-13
- 这篇文章主要介绍了微信小程序(应用号)开发新闻客户端实例的相关资料,需要的朋友可以参考下...2016-10-25
- 这篇文章主要为大家详细介绍了微信小程序实现canvas分享朋友圈海报,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-21
- 这篇文章主要介绍了Python爬取微信小程序通用方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-29