下面總結了三種在php實現郵件發送的實現代碼,包括有phpmailer,mail()函數,JMail()這三種哦,有需要的朋友可參考一下。
利用php mail函數發送
使用mail()函數發送郵件,就必須要有一臺不需要驗證的SMTP服務器,這樣的話配置工作會多一點,但是使用的時候就比較省事了,幾行代碼就可以,代碼如下:
- $to = "test@163.com";
- $subject = "Test";
- $message = "This is a test mail!";
- mail($to,$subject,$message);
JMail發送郵件
賬號必須有smtp發信權限,最好設置$jmail->silent=true,不讓jmail自行拋出錯誤信息,常用的有網易、sogou、QQ、GMail郵箱,代碼如下:
- <?php
- $jmail = new COM('JMail.Message') or die('無法調用Jmail組件');
- $jmail->silent = true; //屏蔽例外錯誤
- $jmail->charset = 'gb2312'; //否則中文會亂碼
- $jmail->From = 'web535000@163.com'; //這里理論上是可以不與發件人地址相同的,但用163的試了幾次都不行,改成一樣的就可以了
- $jmail->FromName = 'BoboTest';
- $jmail->AddRecipient('abc1@163.com'); //可添加多個郵件接受者
- //$jmail->AddRecipient('abc2@163.com');
- //$jmail->AddRecipient('abc3@163.com');
- $jmail->Subject = 'email test.';
- $jmail->Body = 'this is test email.';
- $jmail->MailServerUserName = 'web535000@163.com'; //發信郵件賬號
- $jmail->MailServerPassword = '123456'; //賬戶的密碼
- try{
- $email = $jmail->Send('smtp.163.com');
- if($email) echo '發送成功';
- else echo '發送失敗';
- } catch (Exception $e){
- echo $e->getMessage();
- }
- ?>
發信賬號必須有smtp發信權限,對于網易的郵箱,06年后注冊的新郵箱好像不行,早期的倒可以,還有,最好設置$jmail->silent=true,不讓jmail自行拋出錯誤信息,在設置正常的時候,頻繁發信會出現一些錯誤,據我估計應該是發信服務器設置了發信時間間隔。
phpmailer發送郵件,這個是相當簡單的也是常用的,代碼如下:
- function postmail_jiucool_com($to,$subject = "",$body = ""){
- //Author:Jiucool WebSite: http://m.survivalescaperooms.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.111cn.net"; // 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的主要功能特點:
1.支持郵件 s/mime加密的數字簽名
2.支持郵件多個 TOs, CCs, BCCs and REPLY-TOs
3.可以工作在任何服務器平臺,所以不用擔心WIN平臺無法發送郵件的問題的
4.支持文本/HTML格式郵件
5.可以嵌入image圖像
6.對于郵件客戶端不支持HTML閱讀的進行支持
7.功能強大的發送郵件調試功能debug
8.自定義郵件header
9.冗余SMTP服務器支持
10.支持8bit, base64, binary, and quoted-printable 編碼
11.文字自動換行
12.支持多附件發送功能
13.支持SMTP服務器驗證功能
14.在Sendmail, qmail, Postfix, Gmail, Imail, Exchange 等平臺測試成功
15.提供的下載文件中,包括內容詳細的說明文檔及示例說明,所以不用擔心難于上手的問題!
16.PHPMailer 非常小巧、簡單、方便、快捷
新聞熱點
疑難解答