一、php环境要求:php配置文件php.ini需要开启OpenSSL ,sockets
OpenSSL support | enabled |
Sockets Support | enabled |
二、邮箱准备工作
确保发送者邮箱密码正确,代码编写正确
例如:smtp.163.com
163smtp服务器,需要开启SMTP功能,并且设置SMTP授权码,这个授权码就是用来登录你邮箱的密码。发送邮件时候不能用原来的登录密码,得用这个授权码!
三、示例
准备好phpmailer类,可以去网上搜下,很多……
示例代码:
//发电子邮件
function sys_send_mail($to,$subject,$message)
{
//$subject=SYS_ZH_NAME."运维中心";
try {
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->CharSet = 'UTF-8'; //设置邮件的字符编码,这很重要,不然中文乱码
$mail->SMTPAuth = true; //开启认证
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->Host = MAIL_SMTP;
$mail->Username = MAIL_USER;
$mail->Password = MAIL_PWD;
//$mail->IsSendmail(); //如果没有sendmail组件就注释掉,否则出现“Could not execute: /var/qmail/bin/sendmail ”的错误提示
$mail->AddReplyTo(MAIL_USER, "skyo");//回复地址
$mail->From = MAIL_USER;
$mail->FromName = SYS_ZH_NAME."运维中心";
$mail->AddAddress($to);
$mail->Subject = SYS_ZH_NAME."运维中心".$subject;
$mail->Body = $message;
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; //当邮件不支持html时备用显示,可以省略
$mail->WordWrap = 80; // 设置每行字符串的长度
//$mail->AddAttachment("f:/test.png"); //可以添加附件
$mail->IsHTML(true);
$mail->Send();
//echo '邮件已发送';
} catch (phpmailerException $e) {
echo "邮件发送失败:".$e->errorMessage();
}
}
配置文件:
define("MAIL_SMTP","smtp.163.com");
define("MAIL_USER","[email protected]");
define("MAIL_PWD","******");//这个是上边你设置的授权码不是邮箱登录密码
错误处理:
1、phpmailer SMTP Error: Could not connect to SMTP host.
①检查php环境是否开启openssl和sockets
②邮箱用户名密码(授权码)是否有错
③协议及端口是否设置正确
一般情况就是这几种可能……云服务器一般这个邮件服务还需要单独购买
有关于邮箱协议端口号选择:
网易163免费邮箱相关服务器信息:
其他: