phpmailer 使用 原

內部函數

mail函數

php本身提供了一個郵件發送函數mail,可以在程序中直接發送電子郵件,不過該函數要求服務器支持sendmail或者必須設置一臺不需要中繼的郵件發送服務器,但現在要找到一臺不需要身份驗證的郵件發送中繼幾乎不可能,所以使用mail函數往往無法成功發送email.

自己如果熟悉SMTP協議,結合socket功能就可以編寫高效穩定的郵件發送程序,但對一般用戶來說太困難.好在互聯網上已經有很多別人編寫好的郵件發送模塊,我們只需要下載後簡單調用即可,十分方便.

Mail配置選項

名稱

默認

描述

可更改

SMTP

"localhost"

Windows 專用:SMTP 服務器的 DNS 名稱或 IP 地址。

PHP_INI_ALL

smtp_port

"25"

Windows 專用:SMTP 端口號。自 PHP 4.3 起可用。

PHP_INI_ALL

sendmail_from

NULL

Windows 專用:規定從 PHP 發送的郵件中使用的 "from" 地址。

PHP_INI_ALL

sendmail_path

NULL

Unix 系統專用:路徑(通常 /usr/sbin/sendmail 或 /usr/lib/sendmail)

PHP_INI_SYSTEM

郵件教程 

第一步:需要下載PHPMailer文件包(下載地址見擴展閱讀)

第二步:確認你的服務器系統已經支持socket 如下圖,通過phpinfo();查看是否支持sockets

如果沒有這一項就請注意: socket 是屬於PHP擴展部分,編譯時必須給定一個用於./configure --enable-sockets 的配置選項。

第三步:把文件解壓到你的web服務器目錄下,調用類就可以了,說明:首先包含 class.phpmailer.php,然後創建對象,設置參數,調用成員函數。具體請見下面的示例代碼:

以下爲引用的內容:

<?php

require("phpmailer/class.phpmailer.php");

function smtp_mail ( $sendto_email, $subject, $body, $extra_hdrs, $user_name) {

$mail = new PHPMailer();

$mail->IsSMTP(); // send via SMTP phperz~com

$mail->Host = "200.162.244.66"; // SMTP servers

$mail->SMTPAuth = true; // turn on SMTP authentication

$mail->Username = "yourmail"; // SMTP username 注意:普通郵件認證不需要加 @域名

$mail->Password = "mailPassword"; // SMTP password

$mail->From = "你的郵件地址";

?>

發送示例代碼 

下載該組件後,按如下示例編寫代碼即可實現php在線發送郵件.

一:前臺表單

<html>

<body>

<h3>phpmailer Unit Test</h3>

請你輸入<font color="#FF6666">收信</font>的郵箱地址:

<form name="phpmailer" action="send.php" method="post">

<input type="hidden" name="submitted" value="1"/>

郵箱地址: <input type="text" size="50" name="address" />

<br/>

<input type="submit" value="發送"/>

</form>

</body>

</html>

二:後臺PHP程序

<?php

require("class.phpmailer.php"); //下載的文件必須放在該文件所在目錄

$mail = new PHPMailer(); //建立郵件發送類

$address = $_POST['address'];

$mail->IsSMTP(); // 使用SMTP方式發送

$mail->CharSet='UTF-8';// 設置郵件的字符編碼

$mail->Host = "mail.xxxxx.***"; // 您的企業郵局域名

$mail->SMTPAuth = true; // 啓用SMTP驗證功能

$mail->Port = "***"; //SMTP端口

$mail->Username = ***@xxxx.***; // 郵局用戶名(請填寫完整的email地址)

$mail->Password = "******"; // 郵局密碼

$mail->From = ***@xxxx.***; //郵件發送者email地址

$mail->FromName = "您的名稱";

$mail->AddAddress("$address", "");//收件人地址,可以替換成任何想要接收郵件的email信箱,格式是AddAddress("收件人email","收件人姓名")

//$mail->AddReplyTo("", "");

//$mail->AddAttachment("/var/tmp/file.tar.gz"); // 添加附件

//$mail->IsHTML(true); // set email format to HTML //是否使用HTML格式

$mail->Subject = "PHPMailer測試郵件"; //郵件標題

$mail->Body = "Hello,這是測試郵件"; //郵件內容

$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; //附加信息,可以省略

if(!$mail->Send())

{

echo "郵件發送失敗. <p>";

echo "錯誤原因: " . $mail->ErrorInfo;

exit;

}

echo "郵件發送成功";

?>

require("class.phpmailer.php");

$mail = new PHPMailer();

//通過數組方式存儲郵件接收者

$address = array('aaaaaa','bbbbbb');

//使用SMTP方式發送郵件

$mail->IsSMTP();

//郵局服務器

$mail->Host = 'smtp.exmail.*';

//開啓SMTP驗證

$mail->SMTPAuth = true;

//郵局主機中的用戶名

$mail->Username = 'admin';

//郵局密碼

$mail->Password = '123456';

//郵局端口,SMTP默認25端口

$mail->Port=25;

//郵件發送者email地址

$mail->From = 'xxxxxxx';

//郵件來源(發件人)

$mail->FromName = 'PHPMailer羣發Demo';

$len = count($address);

for ($i=0; $i < $len; $i++) {

$mail->AddAddress($address[$i]);

}

$mail->Subject = $title;//郵件標題

$mail->Body = $content;//郵件內容

$mail->Send();

 

注意:



1. 郵件的字符集設置, $mail->CharSet = "GB2312"; // 這裏指定字符集!在這裏我只指定爲GB2312因爲這樣Outlook能正常顯示郵件主題,我嘗試過設爲utf-8但在Outlook下顯示亂碼。
2. 如果是發送html格式的郵件,那麼記得也指定
3. 如果你想用它來羣發郵件的話,記得修改包含文件函數,如:
require("phpmailer/class.phpmailer.php");
改爲
require_once("phpmailer/class.phpmailer.php");
否則的話會產生類的重定義。

個人認爲要使用phpmailer,首先,需要有一個郵件服務器,PHP的 mail函數沒有指定,應該是使用的PHP設置的SMTP。

而在這裏需要具體指定,同時需要指定郵件服務器的管理者和密碼。

PHPMailer 也是一個功能強大的郵件類 

 

圖片按列

 

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