查看: 2487|回复: 0

[PHP实例] 使用PHPMailer发送邮件实例

发表于 2017-12-12 08:00:01

本文实例为大家分享了PHPMailer发送邮件的具体代码,供大家参考,具体内容如下

PHPMailer类源代码下载地址:https://github.com/PHPMailer/PHPMailer

  1. <?php
  2. /*
  3. to: 邮件接收地址
  4. subject: 邮件主题
  5. body: 邮件内容
  6. attachpath:附件地址
  7. cc: 邮件抄送地址
  8. bcc: 邮件暗抄送地址
  9. */
  10. function send_mail($to, $subject="", $body="", $attachpath="", $cc="", $bcc="")
  11. {
  12. // 对邮件内容进行必要的过滤
  13. $body = eregi_replace("[\]",'',$body);
  14. // 设定时区
  15. date_default_timezone_set("PRC");
  16. require_once('class.phpmailer.php');
  17. require_once("class.smtp.php");
  18. // 实例化PHPMailer对象
  19. $mail = new PHPMailer();
  20. // 设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置为 UTF-8
  21. $mail->CharSet ="UTF-8";
  22. // 设定使用SMTP服务
  23. $mail->IsSMTP();
  24. // 启用 SMTP 验证功能
  25. $mail->SMTPAuth = true;
  26. // SMTP 安全协议
  27. $mail->SMTPSecure = "ssl";
  28. // SMTP 服务器
  29. $mail->Host = "smtp.qq.com";
  30. // SMTP服务器的端口号
  31. $mail->Port = 465;
  32. // SMTP服务器用户名和密码
  33. $mail->Username = "xxxxxx@qq.com";
  34. $mail->Password = "xxxxxx";
  35. // 设置发件人地址和名称,名称可有可无
  36. $mail->SetFrom("xxxxxx@qq.com", "xxxxxx");
  37. // 设置邮件接收地址和名称,第二个参数无所谓。必须用AddAddress添加邮件接收地址。AddReplyTo方法没什么用。
  38. //$mail->AddReplyTo("xxxxxx@163.com", "xxxxxx");
  39. $mailaddrs = split(",", $to);
  40. foreach ($mailaddrs as $addres)
  41. {
  42. //校验邮箱地址是否合法
  43. if (filter_var($addres, FILTER_VALIDATE_EMAIL))
  44. {
  45. $mail->AddAddress($addres);
  46. }
  47. }
  48. // 设置邮件抄送地址
  49. if ($cc != "")
  50. {
  51. $ccaddrs = split(",", $cc);
  52. foreach ($ccaddrs as $ccaddr)
  53. {
  54. //校验邮箱地址是否合法
  55. if (filter_var($ccaddr, FILTER_VALIDATE_EMAIL))
  56. {
  57. $mail->addCC($ccaddr);
  58. }
  59. }
  60. }
  61. // 设置邮件暗抄送地址,私密发送
  62. if ($bcc != "")
  63. {
  64. $bccaddrs = split(",", $bcc);
  65. foreach ($bccaddrs as $bccaddr)
  66. {
  67. //校验邮箱地址是否合法
  68. if (filter_var($bccaddr, FILTER_VALIDATE_EMAIL))
  69. {
  70. $mail->addBCC($bccaddr);
  71. }
  72. }
  73. }
  74. // 设置邮件主题
  75. $mail->Subject = $subject;
  76. // 可选项,向下兼容考虑
  77. $mail->AltBody = "为了查看该邮件,请切换到支持 HTML 的邮件客户端";
  78. // 设置邮件内容
  79. $mail->MsgHTML($body);
  80. //使用HTML格式发送邮件
  81. $mail->IsHTML(true);
  82. // 添加附件,第一个参数是附件地址,第二个参数附件名
  83. //$mail->AddAttachment("images/phpmailer.gif");
  84. $mail->AddAttachment($attachpath);
  85. // 发送邮件
  86. if(!$mail->Send())
  87. {
  88. echo "发送失败:" . $mail->ErrorInfo . PHP_EOL;
  89. }
  90. else
  91. {
  92. echo "恭喜,邮件发送成功!" . PHP_EOL;
  93. }
  94. }
  95. $emailAddr = "xxxxxx@163.com,xxxxxx@qq.com,";
  96. send_mail($emailAddr, "测试邮件", "<h1>使用PHPMailer类发送的邮件。</h1>", "mail/20170216.gif", "xxxxxx@qq.com", "");
  97. ?>
复制代码

测试结果:


说明:第44行的SMTP服务器密码为qq邮箱授权码。

登录QQ邮箱->设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务->生成授权码


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。



回复

使用道具 举报