在php開發利用PHPMailer發送郵件是常用的做法了,這種比起php mail用好用多了,下面我們來看看PHPMailer如何發送帶有附件的電子郵件吧。
.首先到http://phpmailer.worxware.com/ 下載最新版本的程序包
2.下載完成後,找到class.phpmailer.php 、class.smtp.php兩個類放到自己的目錄下!
3.然後新建一個php文件這裡命名為:phpmail_jiucool.php
4.phpmail_jiucool.php內容如下:
實例
function postmail_jiucool_com($to,$subject = "",$body = ""){
//Author:Jiucool WebSite: http://www.jiucool.com
//$to 表示收件人地址 $subject 表示郵件標題 $body表示郵件正文
//error_reporting(E_ALL);
error_reporting(E_STRICT);
date_default_timezone_set("Asia/Shanghai");//設定時區東八區
require_once('class.phpmailer.php');
include("class.smtp.php");
$mail = new PHPMailer(); //new一個PHPMailer對象出來
$body = eregi_replace("[]",'',$body); //對郵件內容進行必要的過濾
$mail->CharSet ="UTF-8";//設定郵件編碼,默認ISO-8859-1,如果發中文此項必須設置,否則亂碼
$mail->IsSMTP(); // 設定使用SMTP服務
$mail->SMTPDebug = 1; // 啟用SMTP調試功能
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // 啟用 SMTP 驗證功能
$mail->SMTPSecure = "ssl"; // 安全協議
$mail->Host = "smtp.googlemail.com"; // SMTP 服務器
$mail->Port = 465; // SMTP服務器的端口號
$mail->Username = "SMTP服務器用戶名"; // SMTP服務器用戶名
$mail->Password = "SMTP服務器密碼"; // SMTP服務器密碼
$mail->SetFrom('發件人地址,如admin#jiucool.com #換成@', '發件人名稱');
$mail->AddReplyTo("郵件回復地址,如admin#jiucool.com #換成@","郵件回復人的名稱");
$mail->Subject = $subject;
$mail->AltBody = "To view the message, please use an HTML compatible email viewer! - From www.jiucool.com"; // optional, comment out and test
$mail->MsgHTML($body);
$address = $to;
$mail->AddAddress($address, "收件人名稱");
//$mail->AddAttachment("images/phpmailer.gif"); // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!恭喜,郵件發送成功!";
}
}
注意:
phpmailer如果添加附件的時候,在附件名稱裡一定要寫明附件的後綴,如果不寫明附件後綴,默認的附件後綴會是.txt。
比如
附件的路徑和附件名稱
如果向上面一樣添加附件發送,則最終接到的附件可能是att.txt。
AddAttachment可以設置附件編碼方式和附件類型,比如上面的附件添加也可以設置為
附件的路徑和附件名稱、
附件的編碼方式大概有這麼幾種:支持8bit, base64, binary, and quoted-printable 編碼
而CSV可接受的MIME Type
· application/octet-stream
· text/comma-separated-values(推薦)
· text/csv
所以,csv格式文件的附件類型可以是上面三種中的任意一種
實例
代碼如下 復制代碼require_once('include/PHPMailer/class.phpmailer.php'); //導入PHPMAILER類
$mail = new PHPMailer(); //創建實例
$mail -> CharSet='utf-8'; //設置字符集
$mail -> SetLanguage('ch','include/PHPMailer/language/'); //設置語言類型和語言文件所在目錄
$mail -> IsSMTP(); //使用SMTP方式發送
$mail -> SMTPAuth = true; //設置服務器是否需要SMTP身份驗證
$mail -> Host = SMTP_SERVER; //SMTP 主機地址
$mail -> Port = SMTP_SERVER_PORT; //SMTP 主機端口
$mail -> From = SMTP_USER_MAIL; //發件人EMAIL地址
$mail -> FromName = 'jasonxu'; //發件人在SMTP主機中的用戶名
$mail -> Username = SMTP_USER_NAME; //發件人的姓名
$mail -> Password = SMTP_USER_PASS; //發件人在SMTP主機中的密碼
$mail -> Subject = '測試郵件的標題'; //郵件主題
$mail -> AltBody = 'text/html'; //設置在郵件正文不支持HTML時的備用顯示
$mail -> Body = '測試郵件的內容';//郵件內容做成
$mail -> IsHTML(true); //是否是HTML郵件
$mail -> AddAddress('chinajason2008#gmail.com','jasonxu'); //收件人的地址和姓名
$mail -> AddReplyTo('chinajason2008#gmail.com','jasonxu'); //收件人回復時回復給的地址和姓名
$mail -> AddAttachment('include/id.csv','att.csv');//附件的路徑和附件名稱
if(!$mail -> Send()) //發送郵件
var_dump($mail -> ErrorInfo); //查看發送的錯誤信息
只要加上這希就可以實例郵箱發送帶附件了
$mail -> AddAttachment('include/id.csv','att.csv');//附件的路徑和附件名稱