一、下载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的收件人名。