首页 >后端开发 >php教程 >php 邮件发送类PHPMailer的用法

php 邮件发送类PHPMailer的用法

怪我咯
怪我咯原创
2017-07-12 13:37:472563浏览

PHPMailer 是一个强大的 PHP 编写的邮件发送类,使用它可以更加便捷的发送邮件,并且还能发送附件和 HTML 格式的邮件,同时还能使用 SMTP 服务器来发送邮件。

PHPMailer 主要功能

  • 在邮件中包含多个 TO、CC、BCC 和 REPLY-TO。

  • 平台应用广泛,支持的 SMTP 服务器包括 Sendmail、qmail、Postfix、Gmail、Imail、Exchange 等等。

  • 支持嵌入图像,附件,HTML 邮件。

  • 可靠的强大的调试功能。

  • 支持 SMTP 认证。

  • 自定义邮件头。

  • 支持 8bit、base64、binary 和 quoted-printable 编码。

这篇文章主要介绍了PHP邮件发送类PHPMailer用法,详细的讲述了安装及配置的方法与功能实现代码,非常具有实用价值,需要的朋友可以参考下,具体步骤如下:

1.在服务器安装 sendmail

sudo apt-get install sendmail

2.启动 sendmail

sudo /etc/init.d/sendmail start

3.修改 php.ini

[mail function] 
SMTP = localhost 
smtp_port = 25 
sendmail_from = me@example.com

4.Function sendMail函数如下

<?php 
/* 调用PHPMailer发送电邮 
* @param String $receiver   收件人 
* @param String $sender    发件人 
* @param String $sender_name 发件人名称如为空则用发件人地址代替 
* @param String $subject   邮件主题 
* @param String $content   邮件内容 
* @param boolean $ishtml    是否html电邮 
* @param Array  $attachements 附件 
* @return boolean 
*/ 
function sendMail($receiver, $sender, $sender_name, $subject, $content, $ishtml=true, $attachments=array()) { 
  include_once "class-phpmailer.php";  
 
  if(empty($receiver) || empty($sender) || empty($subject) || empty($content)){ 
    return false; 
  } 
   
  $mail = new PHPMailer();  
 
  //$mail->IsSMTP();        // 经smtp发送  
  //$mail->Host = "smtp.gmail.com"; // SMTP 服务器 
  //$mail->Port = 465;       // SMTP 端口 
  //$mail->SMTPSecure = &#39;ssl&#39;;   // 加密方式 
  //$mail->SMTPAuth = true;     // 打开SMTP认证 
  //$mail->Username = "username";  // 用户名 
  //$mail->Password = "password";  // 密码 
 
  $mail->IsMail();         // using PHP mail() function 有可能會出現這封郵件可能不是由以下使用者所傳送的提示 
       
  $mail->From = $sender;      // 发信人  
  $mail->FromName = $sender_name;  // 发信人别名  
  $mail->AddReplyTo($sender);    // 回覆人 
  $mail->AddAddress($receiver);   // 收信人  
 
  // 以html方式发送 
  if($ishtml){ 
    $mail->IsHTML(true); 
  } 
 
  // 发送附件 
  if($attachments){ 
    if(is_array($attachments)){ 
      $send_attachments = array(); 
 
      $tmp_attachments = array_slice($attachments,0,1); 
      if(!is_array(array_pop($tmp_attachments))){ 
        if(isset($attachments[&#39;path&#39;])){ 
          array_push($send_attachments, $attachments);           
        }else{ 
          foreach($attachments as $attachment){ 
            array_push($send_attachments, array(&#39;path&#39;=>$attachment)); 
          } 
        } 
      }else{ 
        $send_attachments = $attachments; 
      } 
 
      foreach($send_attachments as $attachment){ 
        $attachment[&#39;name&#39;] = isset($attachment[&#39;name&#39;])? $attachment[&#39;name&#39;] : null; 
        $attachment[&#39;encoding&#39;] = isset($attachment[&#39;encoding&#39;])? $attachment[&#39;encoding&#39;] : &#39;base64&#39;; 
        $attachment[&#39;type&#39;] = isset($attachment[&#39;type&#39;])? $attachment[&#39;type&#39;] : &#39;application/octet-stream&#39;; 
        if(isset($attachment[&#39;path&#39;]) && file_exists($attachment[&#39;path&#39;])){ 
          $mail->AddAttachment($attachment[&#39;path&#39;],$attachment[&#39;name&#39;],$attachment[&#39;encoding&#39;],$attachment[&#39;type&#39;]); 
        } 
      } 
    }elseif(is_string($attachments)){ 
      if(file_exists($attachments)){ 
        $mail->AddAttachment($attachments); 
      } 
    } 
  } 
 
  $mail->Subject = $subject; // 邮件标题 
  $mail->Body   = $content; // 邮件內容 
  return $mail->Send();  
} 
 
// DEMO示例如下: 
$receiver = &#39;receiver@test.com&#39;; 
$sender = &#39;sender@test.com&#39;; 
$sender_name = &#39;sender name&#39;; 
$subject = &#39;subjecct&#39;; 
$content = &#39;content&#39;; 
 
// 四种格式都可以 
$attachments = &#39;attachment1.jpg&#39;; 
$attachments = array(&#39;path&#39;=>&#39;attachment1.jpg&#39;, &#39;name&#39;=>&#39;附件1.jpg&#39;); 
$attachments = array(&#39;attachment1.jpg&#39;,&#39;attachment2.jpg&#39;,&#39;attachment3.jpg&#39;); 
$attachments = array( 
  array(&#39;path&#39;=>&#39;attachment1.jpg&#39;, &#39;name&#39;=>&#39;附件1.jpg&#39;), 
  array(&#39;path&#39;=>&#39;attachment2.jpg&#39;, &#39;name&#39;=>&#39;附件2.jpg&#39;), 
  array(&#39;path&#39;=>&#39;attachment3.jpg&#39;, &#39;name&#39;=>&#39;附件3.jpg&#39;), 
); 
$flag = sendMail($receiver, $sender, $sender_name, $subject, $content, true, $attachments); 
echo $flag; 
?>

以上是php 邮件发送类PHPMailer的用法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn