多くの PHP 開発者は、コードから電子メールを送信する必要があります。これを直接サポートする唯一の PHP 関数はmail()
です。ただし、暗号化、認証、HTML メッセージ、添付ファイルなどの一般的な機能を使用するためのサポートは提供されません。
電子メールを正しくフォーマットするのは驚くほど難しいです。重複する (および矛盾する) 標準が無数にあり、恐ろしく複雑な書式設定とエンコード規則に厳密に従う必要があります。オンラインで見つかる、 mail()
関数を直接使用するコードの大部分は、安全ではないにしても、明らかに間違っています。
PHP mail()
関数は通常、ローカル メール サーバーを介して送信します。通常、Linux、BSD、および macOS プラットフォームでは、 sendmail
バイナリが先頭にありますが、Windows には通常、ローカル メール サーバーが含まれていません。 PHPMailer の統合 SMTP クライアントを使用すると、ローカル メール サーバーを必要とせずに、すべてのプラットフォームで電子メールを送信できます。ただし、 mail()
関数は可能な限り避けるべきであることに注意してください。 SMTP をローカルホストに使用する方が高速かつ安全です。
自分でやろうとしないでください。PHPMailer を使用しない場合でも、独自のライブラリを作成する前に検討すべき優れたライブラリが他にもたくさんあります。 SwiftMailer 、 Laminas/Mail、 ZetaComponents などを試してください。
このソフトウェアは、GPL 協力コミットメントとともに、LGPL 2.1 ライセンスに基づいて配布されます。ソフトウェアの入手可能性と配布については、「ライセンス」をお読みください。
PHPMailer は Packagist (セマンティック バージョニングを使用) で入手でき、Composer 経由のインストールが PHPMailer のインストール方法として推奨されます。次の行をcomposer.json
ファイルに追加するだけです。
"phpmailer/phpmailer" : " ^6.9.2 "
または走る
composer require phpmailer/phpmailer
vendor
フォルダーとvendor/autoload.php
スクリプトはComposerによって生成されることに注意してください。これらは PHPMailer の一部ではありません。
XOAUTH2 認証を使用したい場合は、 league/oauth2-client
と適切なサービス アダプター パッケージへの依存関係をcomposer.json
に追加するか、特に @decomplexity の SendOauth2 ラッパーを確認する必要があります。 Microsoft のサービスを使用する。
また、Composer を使用していない場合は、PHPMailer を zip ファイルとしてダウンロードし (ドキュメントとサンプルは zip ファイルに含まれていないことに注意してください)、PHPMailer フォルダーの内容を、次で指定されたinclude_path
ディレクトリの 1 つにコピーすることもできます。 PHP 設定を変更し、各クラス ファイルを手動でロードします。
<?php
use PHPMailer PHPMailer PHPMailer ;
use PHPMailer PHPMailer Exception ;
require ' path/to/PHPMailer/src/Exception.php ' ;
require ' path/to/PHPMailer/src/PHPMailer.php ' ;
require ' path/to/PHPMailer/src/SMTP.php ' ;
SMTP
クラスを明示的に使用していない場合 (おそらく使用していない可能性があります)、SMTP クラスのuse
行は必要ありません。例外を使用していない場合でも、内部で使用されるため、 Exception
クラスをロードする必要があります。
PHPMailer 5.2 (PHP 5.0 ~ 7.0 と互換性がある) は、セキュリティ更新プログラムであってもサポートされなくなりました。 5.2 の最新バージョンは 5.2-stable ブランチにあります。 PHP 5.5 以降を使用している場合は (そうすべきです)、6.x リリースに切り替えてください。
最大の変更点は、ソース ファイルがsrc/
フォルダーに配置され、PHPMailer が名前空間PHPMailerPHPMailer
宣言するようになったことです。これにはいくつかの重要な影響があります。詳細については、アップグレード ガイドをお読みください。
パッケージ全体を手動または Composer を使用してインストールするのは簡単で便利で信頼性が高くなりますが、プロジェクトには重要なファイルのみを含めることもできます。少なくとも src/PHPMailer.php が必要です。 SMTP を使用している場合は src/SMTP.php が必要で、POP-before SMTP を使用している場合 (その可能性は非常に低いです!) src/POP3.php が必要です。ユーザーにエラーを表示せず、英語のみのエラーで対応できる場合は、言語フォルダーをスキップできます。 XOAUTH2 を使用している場合は、src/OAuth.php と、認証するサービスの Composer 依存関係が必要になります。本当に、Composer を使用する方がはるかに簡単です。
<?php
//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
use PHPMailer PHPMailer PHPMailer ;
use PHPMailer PHPMailer SMTP ;
use PHPMailer PHPMailer Exception ;
//Load Composer's autoloader
require ' vendor/autoload.php ' ;
//Create an instance; passing `true` enables exceptions
$ mail = new PHPMailer ( true );
try {
//Server settings
$ mail -> SMTPDebug = SMTP :: DEBUG_SERVER ; //Enable verbose debug output
$ mail -> isSMTP (); //Send using SMTP
$ mail -> Host = ' smtp.example.com ' ; //Set the SMTP server to send through
$ mail -> SMTPAuth = true ; //Enable SMTP authentication
$ mail -> Username = ' [email protected] ' ; //SMTP username
$ mail -> Password = ' secret ' ; //SMTP password
$ mail -> SMTPSecure = PHPMailer:: ENCRYPTION_SMTPS ; //Enable implicit TLS encryption
$ mail -> Port = 465 ; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
//Recipients
$ mail -> setFrom ( ' [email protected] ' , ' Mailer ' );
$ mail -> addAddress ( ' [email protected] ' , ' Joe User ' ); //Add a recipient
$ mail -> addAddress ( ' [email protected] ' ); //Name is optional
$ mail -> addReplyTo ( ' [email protected] ' , ' Information ' );
$ mail -> addCC ( ' [email protected] ' );
$ mail -> addBCC ( ' [email protected] ' );
//Attachments
$ mail -> addAttachment ( ' /var/tmp/file.tar.gz ' ); //Add attachments
$ mail -> addAttachment ( ' /tmp/image.jpg ' , ' new.jpg ' ); //Optional name
//Content
$ mail -> isHTML ( true ); //Set email format to HTML
$ mail -> Subject = ' Here is the subject ' ;
$ mail -> Body = ' This is the HTML message body <b>in bold!</b> ' ;
$ mail -> AltBody = ' This is the body in plain text for non-HTML mail clients ' ;
$ mail -> send ();
echo ' Message has been sent ' ;
} catch ( Exception $ e ) {
echo " Message could not be sent. Mailer Error: { $ mail -> ErrorInfo }" ;
}
サンプル フォルダーには、Gmail 経由の送信、連絡先フォームの作成、メーリング リストへの送信など、多くの一般的なシナリオがカバーされているので、試してみたいものがたくさんあります。
インスタンスを再利用している場合 (メーリング リストに送信する場合など)、重複したメッセージの送信を避けるために受信者リストをクリアする必要がある場合があります。詳細については、メーリング リストの例を参照してください。
それでおしまい。これで、PHPMailer を使用する準備が整ったはずです。
PHPMailer のデフォルトは英語ですが、言語フォルダーには、遭遇する可能性のある PHPMailer エラー メッセージの翻訳が多数見つかります。ファイル名には、翻訳用の ISO 639-1 言語コードが含まれています (フランス語の場合はfr
)。言語を指定するには、次のように PHPMailer にどの言語を使用するかを指示する必要があります。
//To load the French version
$ mail -> setLanguage ( ' fr ' , ' /optional/path/to/language/directory/ ' );
修正や新しい言語を歓迎します。修正が必要な場合は、tests フォルダー内の Language/TranslationCompletenessTest.php スクリプトを実行すると、不足している翻訳が表示されます。
GitHub wiki から読み始めてください。問題が発生した場合は、トラブルシューティング ガイドを参照してください。このガイドは頻繁に更新されます。
一般的なシナリオで PHPMailer を使用する方法の例は、サンプル フォルダーにあります。適切な出発点を探している場合は、Gmail の例から始めることをお勧めします。
PHPMailer のデプロイされたコード フットプリントを減らすために、Composer または GitHub の zip ファイル ダウンロード経由で PHPMailer をロードする場合、サンプルは含まれないため、git リポジトリのクローンを作成するか、上記のリンクを使用してサンプルに直接アクセスする必要があります。
生成された完全な API ドキュメントはオンラインで入手できます。
最上位フォルダーでphpdoc
を実行すると、完全な API レベルのドキュメントを生成できます。ドキュメントはdocs
フォルダーに表示されますが、PHPDocumentor がインストールされている必要があります。単体テストは、暗号化などのさまざまな操作を行う方法についての良い参考になるかもしれません。
ドキュメントに必要な内容が記載されていない場合は、Stack Overflow で多くの質問を検索し、「SMTP エラー: SMTP ホストに接続できませんでした。」について質問する前に、トラブルシューティング ガイドをお読みください。
PHPMailer テストは PHPUnit 9 を使用し、古い PHPUnit および PHP バージョンで 9 スタイルのテストを実行できるようにポリフィルを使用します。
これが解決しない場合、何か手助けできることはありますか?
見つかった脆弱性は責任を持って開示してください。セキュリティの問題はメンテナに非公開で報告してください。
GitHub で SECURITY および PHPMailer のセキュリティ アドバイザリを参照してください。
バグ レポート、提案、プル リクエストを GitHub Issue Tracker に送信してください。
私たちは、特殊なケースの修正、テスト対象範囲の拡大、翻訳の更新に特に関心を持っています。
ドキュメント内で間違いを見つけた場合、または何かを追加したい場合は、Wiki を修正してください。誰でも編集できます。
PHPMailer GitHub 組織に移行する前の git クローンがある場合は、クローン内から次のようなコマンドを使用して、古い GitHub の場所を参照するリモート URL を更新する必要があります。
git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git
SourceForge プロジェクトや Google Code プロジェクトは今後使用しないでください。これらは廃止され、メンテナンスされなくなりました。
PHPMailer の開発時間とリソースは、世界で唯一のプライバシー優先の電子メール マーケティング システムである Smartmessages.net によって提供されます。
ビールでも、T シャツでも、冷たい現金でも、寄付は大歓迎です。 GitHub を介したスポンサーシップは、PHPMailer のメンテナーや貢献者に「ありがとう」を伝える簡単で便利な方法です。プロジェクト ページの [スポンサー] ボタンをクリックするだけです。あなたの会社が PHPMailer を使用している場合は、Tidelift のエンタープライズ サポート プログラムへの参加を検討してください。
Tidelift サブスクリプションの一部として利用できます。
PHPMailer および他の何千ものパッケージのメンテナは、Tidelift と協力して、アプリケーションの構築に使用するオープンソース パッケージに商用サポートとメンテナンスを提供しています。使用するパッケージそのもののメンテナーに料金を支払いながら、時間を節約し、リスクを軽減し、コードの健全性を向上させます。もっと詳しく知る。
変更ログを参照してください。
coolbru
) と Andy Prevost ( codeworxtech
) が 2004 年にプロジェクトを引き継ぎました。