欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

php5.3发送邮件 phpemail的使用 (适用php5.3)

程序员文章站 2022-06-15 23:46:12
...

1、下载phpemail资源包

github上的PHPMailer,需要php版本>=5.5;用在php5.3上回有各种问题,所以找了个适用于php5.3的phpemail  下载地址(如何改下载 所需积分,还请留言告知,上传之后默认要5积分!!无奈)

2、php5.3的实例(写法大致一样)

展示

php5.3发送邮件 phpemail的使用 (适用php5.3)

事先准备邮件服务器

实例使用163的邮箱,开启授权码。

php5.3发送邮件 phpemail的使用 (适用php5.3)

代码

//引用工具类

include_once("../util/phpmailer/class.phpmailer.php"); 
include_once("../util/phpmailer/class.smtp.php");
...
...
//类中实例化
	public function __construct($get)
        {
		$this->email = new PHPMailer(true);
        }
	//测试
	public function test(){
		$this->send_mail('aaa@qq.com','amxl','这里提示邮件' .time(),'<h1>测试文本</h1>' . date('Y-m-d H:i:s'));
	}
	//一键导入时发送邮件通知
	public function send_mail($to,$fromname,$title,$content){
		try { 
			$this->email->IsSMTP(); 
			$this->email->CharSet   = 'UTF-8'; //设置邮件的字符编码,这很重要,不然中文乱码 
			$this->email->SMTPAuth	= true; //开启认证 
			$this->email->Port	= 25; //端口请保持默认
			$this->email->Host	= "smtp.163.com"; //使用163邮箱发送
			$this->email->Username	= "aaa@qq.com"; //这个可以替换成自己的邮箱
			$this->email->Password	= "xxxx"; //注意 这里是写smtp的授权码 写的不是163密码,此授权码不可用
			//$mail->IsSendmail(); //如果没有sendmail组件就注释掉,否则出现“Could not execute: /var/qmail/bin/sendmail ”的错误提示 
			$this->email->AddReplyTo("aaa@qq.com","Amxl");//回复地址 
			$this->email->From	= "aaa@qq.com"; //发件用户
			$this->email->FromName	= $fromname; //发件用户名

			$this->email->AddAddress($to); //收件用户
			$this->email->Subject	= $title; 
			$this->email->Body	= $content;
			$this->email->AltBody	= "To view the message, please use an HTML compatible email viewer!"; //当邮件不支持html时备用显示,可以省略 
			$this->email->WordWrap	= 80; // 设置每行字符串的长度 
			//$mail->AddAttachment("f:/test.png"); //可以添加附件 
			$this->email->IsHTML(true); 
			$this->email->Send();
			//echo "邮件已发送";
		} catch (phpmailerException $e) { 
			echo "邮件发送失败:".$e->errorMessage(); 
		} 
	}

3、遇到的问题

SMTP Error: Could not authenticate 

首先,在php.ini中去掉下面的两个分号

;extension=php_sockets.dll
;extension=php_openssl.dll

然后重启一下;

方法一:检查邮件服务器账号密码(我就犯了这个蠢事,两个邮箱 交叉用 用户名和授权码,恐怕是脑子进水了!)

方法二:修改class.phpmailer.php中的smtp大小写,(针对新版PHPMailer)

function IsSMTP() {
    //$this->Mailer = 'smtp';
    $this->Mailer = 'SMTP';
}

方法三:将fsockopen函数替换成pfsockopen函数(或者使用stream_socket_client函数)(针对新版PHPMailer)

$this->smtp_conn = stream_socket_client("tcp://".$host.":".$port, $errno,  $errstr,  $tval);