要使用PHP安全地發送郵件可以使用PHPMailer,說明如下:
PHP 本身提供了一個mail()
函數,看起來簡單易用。 不幸的是,與 PHP 中的很多東西一樣,它的簡單性隻是個幻象,事實上使用不當它可能有嚴重的安全問題。
Email 是一組網絡協議,比 PHP 的曆史還曲折。完全可以說發送郵件中的陷阱與 PHP 的mail()
函數一樣多,這個可能會令你有點「不寒而栗」吧。
PHPMailer 是一個流行而成熟的開源庫,為安全地發送郵件提供一個易用的接口。 它關注和解決可能的陷阱,這樣你可以專注於更重要的事情。
示例PHP代碼如下,經 PHPMailer 5.1 測試
<?php
// Include the PHPMailer library
require_once('phpmailer-5.1/class.phpmailer.php');
// Passing 'true' enables exceptions. This is optional and defaults to false.
$mailer = new PHPMailer(true);
// Send a mail from Bilbo Baggins to Gandalf the Grey
// Set up to, from, and the message body. The body doesn't have to be HTML;
// check the PHPMailer documentation for details.
$mailer->Sender = 'bbaggins@example.com';
$mailer->AddReplyTo('bbaggins@example.com', 'Bilbo Baggins');
$mailer->SetFrom('bbaggins@example.com', 'Bilbo Baggins');
$mailer->AddAddress('gandalf@example.com');
$mailer->Subject = 'The finest weed in the South Farthing';
$mailer->MsgHTML('<p>You really must try it, Gandalf!</p><p>-Bilbo</p>');
// Set up our connection information.
$mailer->IsSMTP();
$mailer->SMTPAuth = true;
$mailer->SMTPSecure = 'ssl';
$mailer->Port = 465;
$mailer->Host = 'my smpt host';
$mailer->Username = 'my smtp username';
$mailer->Password = 'my smtp password';
// All done!
$mailer->Send();
?>
PHPMailer的特性
- 要用PHP發送郵件,PHPMailer應該是時間上最受歡迎的代碼庫。
- PHPMailer在許多著名的開源項目想使用,如:WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla!
- 集成SMTP支持,不需要本地服務器即可發送。
- 支持使用多個TOs, CCs, BCCs and REPLY-TOs進行發送。
- 多種郵件形式,支持不能讀取HTML的郵件客戶端。
- 支持的編碼:UTF-8 content and 8bit, base64, binary, and quoted-printable。
- 支持使用LOGIN, PLAIN, NTLM, CRAM-MD5 and Google’s XOAUTH2 mechanisms over SSL and TLS transports進行SMTP身份認證。
- 支持47中語言顯示錯誤消息。
- 支持DKIM and S/MIME signing。
- 兼容PHP5.0及之後的版本。
還有很多其他特性,這裏不意義列出了,詳見:PHPMailer。