一、下载phpMailer
phpMailer 是一个非常强大的PHP邮件发送类,可以设定发送邮件地址、回复地址、邮件主题、html网页、上传附件、并且使用起来非常方便。
以下测试使用 phpMailer 连接163邮箱服务,发送邮件。当然连接QQ邮箱服务发送邮件也一样的,唯一的区别是端口不一样,163的smtp服务使用25端口,而QQ的smtp服务使用587端口。
phpMailer包含以下5个类。此处要注意,把phpMailer的源码放到自己项目里的时候,要根据项目的文件结构,修改源码的命名空间,否则有可能出现调用不到的错误。
phpMailer源码
二、准备环境
PHPMailer通过socket连接邮件服务器,所以需要PHP环境需要装有sockets扩展,此外如果需要SSL加密邮件,还需要openssl扩展。
邮箱服务商默认是不允许用户在邮件客户端软件登陆的,但如果需要,需要去后台开启,并且获得授权码,使用邮箱地址+授权码在邮件客户端登陆。
开启客户端登陆服务
三、编写代码
一切准备好了,可以测试发邮件了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| public function sendEmail() { $mail = new \Task\Sdk\PHPMailer\PHPMailer(true); try { $email_setting = array( 'host'=>"smtp.163.com", 'port'=>"25", 'username'=>"username1@163.com", 'password'=>"QTWIF*****STQC", 'charset'=>"utf-8", 'from'=>["username1@163.com", "username1"], 'to'=>[ ["username2@163.com","username2"] ], 'cc'=>[ ["username3@163.com","username3"] ], 'bcc'=>[ ["username4@qq.com","username4"] ], );
$mail->isSMTP(); $mail->Host = $email_setting['host']; $mail->SMTPAutoTLS = false; $mail->SMTPAuth = true; $mail->Username = $email_setting['username']; $mail->Password = $email_setting['password']; $mail->Port = $email_setting['port']; $mail->CharSet = $email_setting['charset'];
$mail->setFrom($email_setting['from'][0], $email_setting['from'][1]); foreach($email_setting['to'] as $to){ $mail->addAddress($to[0],$to[1]); } foreach($email_setting['cc'] as $cc){ $mail->addCC($cc[0],$cc[1]); } foreach($email_setting['bcc'] as $bcc){ $mail->addBCC($bcc[0],$bcc[1]); }
$mail->isHTML(true); $mail->Subject = '这是一封测试邮件,不用理会'; $mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->send(); echo 'Message has been sent'; } catch (Exception $e) { echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; } }
|
四、补充
电子邮件中的CC 英文全称是 Carbon Copy(抄送)。
电子邮件中的BCC英文全称是 Blind Carbon Copy(暗抄送)。
两者的区别在于在BCC栏中的收件人可以看到所有的收件人名(TO,CC,BCC),而在TO和CC栏中的收件人看不到BBC的收件人名。