PHP 使用 PHPMailer 发送邮件
//发送邮件 public function sendMail($to,$subject='',$body=''){ include('class.phpmailer.php'); include('class.smtp.php'); include('config.db.php'); $mail = new PHPMailer(); $mail->CharSet = "utf-8";//设置邮件编码 $mail->IsSMTP();//设定使用SMTP服务 $mail->SMTPDebug = 1;//启用SMTP调试功能 $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->Host = $mailconfig['Host']; //SMTP服务器 $mail->Port = $mailconfig['Port'];//SMTP服务器端口号 $mail->Username = $mailconfig['Username']; //SMTP服务器用户名 $mail->Password = $mailconfig['Password']; //SMTP服务器密码 $mail->Subject = $subject; $mail->SetFrom($mailconfig['Frommail'], $mailconfig['Fromname']); $mail->AltBody = ""; $mail->MsgHTML($body); $address = $to; $mail->AddAddress($address,''); if(!$mail->send()){ echo 'Mailer Error: '.$mail->ErrorInfo; }else{ echo "Message sent!恭喜,邮件发送成功"; } }
可能出现的问题:
1、如果邮件内容出现中文,一定要设置charset。PHP版本高的设置GBK可能会报错:
Warning: html_entity_decode(): charset `GBK' not supported , 可以设置成utf-8
2、报错:01 mail from address must be same as authorization user 原因是因为Username的邮件地址和SetFrom的邮件地址不一样,设置成一样的就可以了。
3、smtp.qq.com 的端口号。一般是465或587
4、SMTP -> ERROR: Failed to connect to server: php_network_getaddresses: getaddrinfo failed 解决这个错误的方法,是你的邮箱要开启相关的配置,Password这一项写获得的邮箱验证码。
基本上就可以完美发送邮件了。。