PHPmailer发送邮件
PHPMailer的GitHub地址:https://github.com/Synchro/PHPMailer
PHPMailer的包下载地址:PHPMailer-master
PHPMailer的Demo下载地址:phpMailerDemo
不喜欢说前置 直接上代码(更多详细的配置,请参考完整包里面的示例)
<?php error_reporting(0); require_once 'PHPMailerAutoload.php'; function postmail($to,$subject = '',$body = ''){ //Author:老猫 WebSite: http://www.dpdp.fun //$to 表示收件人地址 $subject 表示邮件标题 $body表示邮件正文 //error_reporting(E_ALL); date_default_timezone_set('Asia/Shanghai');//设定时区东八区 $mail = new PHPMailer(); //new一个PHPMailer对象出来 $mail->CharSet ="ISO-8859-1";//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码 $mail->IsSMTP(); // 设定使用SMTP服务 $mail->SMTPDebug = 0; // 启用SMTP调试功能 // 1 = errors and messages // 2 = messages only $mail->SMTPAuth = true; // 启用 SMTP 验证功能 //$mail->SMTPSecure = "ssl"; // 安全协议,可以注释掉 $mail->Host = 'smtp.163.com'; // SMTP 服务器 $mail->Port = 25; // SMTP服务器的端口号 $mail->Username = 'xxxxx@163.com'; // SMTP服务器用户名,PS:我乱打的 $mail->Password = 'password'; // SMTP服务器密码 $mail->SetFrom('xxxxxx@163.com', 'sender'); //$mail->AddReplyTo('xxx@xxx.xxx','who'); $mail->Subject = $subject; $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional, comment out and test $mail->MsgHTML($body); $address = $to; $mail->AddAddress($address, ''); //$mail->AddAttachment("images/phpmailer.gif"); // attachment //$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment if(!$mail->Send()) { return 'Mailer Error: ' . $mail->ErrorInfo; } else { return "Message sent!恭喜,邮件发送成功!"; } }
官方例子:更多例子可以下载包在Example里面找到
<?php require 'PHPMailerAutoload.php'; $mail = new PHPMailer; //$mail->SMTPDebug = 3; // Enable verbose debug output $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'user@example.com'; // SMTP username $mail->Password = 'secret'; // SMTP password $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 587; // TCP port to connect to $mail->From = 'from@example.com'; $mail->FromName = 'Mailer'; $mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient $mail->addAddress('ellen@example.com'); // Name is optional $mail->addReplyTo('info@example.com', 'Information'); $mail->addCC('cc@example.com'); $mail->addBCC('bcc@example.com'); $mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body <b>in bold!</b>'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; if(!$mail->send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; } else { echo 'Message has been sent'; }
常见问题:
1:如果用腾讯的邮箱,要确认自己的SMTP 服务是不是开启了(如果你没有二级密码,那默认应该是关闭的就会报错,说无法连接服务)
在设置=》账户=》SMTP对应项
2:确认自己的服务器是否CURL 和SOCKETS 开启如果用SSL 那么请确认ssl 开启
3:乱码问题,可以自己尝试下对应的编码,或者自己搜索下,一般具体情况具体分析,
4:对应邮箱服务商的SMTP地址可以自己在邮箱设置中寻找,或者搜索下例如 “163SMTP 服务器地址”