在php中提供了一個發送郵件的函數mail函數,它可以在程式中直接寄送電子郵件,不過它要求伺服器支援sendmail
或者必須設定一台不需要中繼的郵件發送伺服器,但現在要找到一台不需要身分識別驗證的郵件發送中繼幾乎不可能。
所以使用mail函數往往無法成功發送email.
自己如果熟悉SMTP協議,結合socket功能就可以編寫高效穩定的郵件發送程式,但對一般使用者來說太困難。好在互連網上已經有很多別人編寫好的郵件發送模組,我們只需要下載後簡單調用即可,十分方便。
在此我們給使用者推薦一個php下功能十分強大,易用且免費的SMTP類別模組-PHPMailer,
PHPMailer是一個用於寄送電子郵件的PHP函數包。它提供的功能包括:
*.在發送郵時指定多個收件者,抄送地址,暗送地址和回複地址
*.支援多種郵件編碼包括:8bit,base64,binary和quoted-printable
*.支援SMTP驗證
*.支援冗餘SMTP伺服器
*.支援帶附件的郵件和Html格式的郵件
*.自訂郵件標頭
*.支援在郵件中內嵌圖片
*.調試靈活
*.經測試相容的SMTP伺服器包括:Sendmail,qmail,Postfix,Imail,Exchange等
*.可運行在任何平台之上
下載該組件後,按如下樣本編寫代碼即可實現php線上發送郵件。
一:html程式
<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->Host = "mail.xxxxx.com"; // 您的企業郵局網域名稱
$mail->SMTPAuth = true; // 啟用SMTP驗證功能
$mail->Username = "user@xxxx.com"; // 郵局使用者名稱(請填寫完整的email地址)
$mail->Password = "******"; // 郵局密碼
$mail->From = "user@xxxx.com"; //郵件寄件者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 "郵件發送成功";
?>