首頁 >後端開發 >php教程 >php 郵件傳送類別PHPMailer的用法

php 郵件傳送類別PHPMailer的用法

怪我咯
怪我咯原創
2017-07-12 13:37:472594瀏覽

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