php使用smtp發送郵件(ssl鏈接方式, PHPMailer類)

PHPMailer類庫下載地址

github:https://github.com/PHPMailer/PHPMailer

composer安裝

composer require phpmailer/phpmailer

1、不使用ssl模式發送代碼示例如下: 

<?php
/**
* by yl
*/
header("content-type:text/html;charset=utf-8");
ini_set("magic_quotes_runtime",0);
require 'class.phpmailer.php';
try {
	$mail = new PHPMailer(true); 
	$mail->IsSMTP();
	$mail->CharSet='UTF-8'; //設置郵件的字符編碼,這很重要,不然中文亂碼
	$mail->SMTPAuth   = true;                  //開啓認證
	$mail->Port       = 25;                    
	$mail->Host       = "smtp.163.com"; 
	$mail->Username   = "[email protected]";    
	$mail->Password   = "";            
	//$mail->IsSendmail(); //如果沒有sendmail組件就註釋掉,否則出現“Could  not execute: /var/qmail/bin/sendmail ”的錯誤提示
	$mail->AddReplyTo("[email protected]","mckee");//回覆地址
	$mail->From       = "[email protected]";
	$mail->FromName   = "www.aaa.com";
	$to = "[email protected]";
	$mail->AddAddress($to);
	$mail->Subject  = "phpmailer測試標題";
	$mail->Body = "<h1>phpmail演示</h1>這是測試(<font color=red>www.phpddt.com</font>)對phpmailer的測試內容";
	$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; //當郵件不支持html時備用顯示,可以省略
	$mail->WordWrap   = 80; // 設置每行字符串的長度
	//$mail->AddAttachment("f:/test.png");  //可以添加附件
	$mail->IsHTML(true); 
	$mail->Send();
	echo '郵件已發送';
} catch (phpmailerException $e) {
	echo "郵件發送失敗:".$e->errorMessage();
}
?>

 2、使用ssl發送

<?php 
require './vendor/autoload.php'; 
use PHPMailer\PHPMailer\PHPMailer;
$mail=new PHPMailer();
try{
    //郵件調試模式
    $mail->SMTPDebug = 2;  
    //設置郵件使用SMTP
    $mail->isSMTP();
    // 設置郵件程序以使用SMTP
    $mail->Host = 'ssl://smtp.exmail.qq.com';
    // 設置郵件內容的編碼
    $mail->CharSet='UTF-8';
    // 啓用SMTP驗證
    $mail->SMTPAuth = true;
    // SMTP username
    $mail->Username = '郵件名稱';
    // SMTP password
    $mail->Password = '密碼,QQ爲登錄授權碼授權碼';
    // 啓用TLS加密,`ssl`也被接受
    //            $mail->SMTPSecure = 'ssl';
    // 連接的TCP端口
    //            $mail->Port = 465;
    //設置發件人
    $mail->setFrom('[email protected]', 'aaaa');
    //  添加收件人1
    $mail->addAddress('[email protected]', 'aaaa');     // Add a recipient
    //            $mail->addAddress('[email protected]');               // Name is optional
    //            收件人回覆的郵箱
    $mail->addReplyTo('[email protected]', 'aaa');
    //            抄送
    //            $mail->addCC('[email protected]');
    //            $mail->addBCC('[email protected]');
    //附件
    //            $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
    //            $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
    //Content
    // 將電子郵件格式設置爲HTML
    $mail->isHTML(true);
    $mail->Subject = '郵件主題';
    $mail->Body    = '郵件正文部分';
    //            $mail->AltBody = '這是非HTML郵件客戶端的純文本';
    $mail->send();
    echo 'Message has been sent';
     $mail->isSMTP();
}catch (Exception $e){
    echo 'Mailer Error: ' . $mail->ErrorInfo;
}

注意事項:防火牆問題,端口問題,測試是否通信正常:telnet smtp.163com 465

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章