phpmailer:phpメールを送信するための強力なツール
PHPMailerは、2001年にリリースされて以来、PHP開発者がプログラムの電子メールを送信するための優先オプションの1つであり、SwiftMailerなどの他の人気のあるライブラリと同等です。この記事では、PHPMailerがPHPの組み込みmail()
機能よりも優れている理由を説明し、コードの例を提供します。
mail()
関数よりも多くの機能と柔軟性を提供する人気のあるオープンソースPHPメール配信ライブラリです。能力。 mail()
関数の比較ほとんどの場合、PHPMailerはPHPビルトインmail()
関数に代わるものですが、多くの場合、mail()
関数の柔軟性はニーズを満たすのに十分ではありません。
最初に、phpmailerはオブジェクト指向のインターフェイスを提供しますが、mail()
関数はオブジェクト指向ではありません。通常、PHP開発者は、mail()
関数を使用して電子メールを送信するときに$headers
文字列を作成することを好みません。これには多くのエスケープ操作が必要です。 PHPMailerはこのプロセスを簡素化します。 mail()
関数を使用して添付ファイルとHTMLベースのメールを送信する場合、開発者は複雑なコード(脱出、エンコード、フォーマット)を記述する必要があり、PHPMailerはこれを簡単にします。
さらに、mail()
関数では、電子メールを送信するためにローカルメールサーバーが必要です。これは必ずしも簡単ではありません。認証が利用可能な場合、PHPMailerは非ローカルメールサーバー(SMTP)を使用できます。
その他の利点は次のとおりです
phpmailerのインストール
を使用してインストールできます
composer require phpmailer/phpmailer
composer require phpmailer/phpmailer
PHPファイルのコードとコメントは、電子メールの件名、送信者の電子メールアドレス、HTML電子メールボディ、およびエラーの扱い場所を十分に説明できます。
以下は、phpmailerを使用して添付ファイル付きのメールを送信する方法の例です。
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require_once "vendor/autoload.php"; // PHPMailer对象 $mail = new PHPMailer(true); // 构造函数中的参数true启用异常 // 发件人邮箱地址和名称 $mail->From = "from@yourdomain.com"; $mail->FromName = "完整姓名"; // 收件人地址和名称 $mail->addAddress("recepient1@example.com", "收件人姓名"); $mail->addAddress("recepient1@example.com"); // 收件人姓名是可选的 // 收件人回复地址 $mail->addReplyTo("reply@yourdomain.com", "回复"); // 抄送和密送 $mail->addCC("cc@example.com"); $mail->addBCC("bcc@example.com"); // 发送HTML或纯文本邮件 $mail->isHTML(true); $mail->Subject = "主题文本"; $mail->Body = "<i>HTML格式邮件正文</i>"; $mail->AltBody = "这是邮件内容的纯文本版本"; try { $mail->send(); echo "邮件已成功发送"; } catch (Exception $e) { echo "邮件错误:" . $mail->ErrorInfo; } ?>
メールに添付ファイルを追加するには、ファイルパスをパラメーターとして渡すことにより、phpmailerオブジェクトの
関数を呼び出すだけです。複数のファイルを添付するには、複数回呼び出す必要があります。 addAttachment
PHPMailerのクラスを使用したため、エラーが発生する可能性のある問題をデバッグするのに役立ちます。また、PHPMailerコンストラクターにパラメーターException
を追加して、高レベルでより記述的な例外を出力しました。 true
関数を実行することに関連する最大のエラーがあります。
mail()
より詳細なエラー情報が必要な場合は、
句に以下を追加することもできます。
通常、メール関数の問題は、欠落しているメールサーバーの設定に関連しています。
catch
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require_once "vendor/autoload.php"; $mail = new PHPMailer; $mail->From = "from@yourdomain.com"; $mail->FromName = "完整姓名"; $mail->addAddress("recipient1@example.com", "收件人姓名"); // 提供附件的文件路径和名称 $mail->addAttachment("file.txt", "File.txt"); $mail->addAttachment("images/profile.png"); // 文件名是可选的 $mail->isHTML(true); $mail->Subject = "主题文本"; $mail->Body = "<i>HTML格式邮件正文</i>"; $mail->AltBody = "这是邮件内容的纯文本版本"; try { $mail->send(); echo "邮件已成功发送"; } catch (Exception $e) { echo "邮件错误:" . $mail->ErrorInfo; } ?>
ローカリゼーションエラーメッセージを表示error_get_last
print_r(error_get_last());
異なる言語でエラーメッセージを表示するには、PHPMailerのソースコードからProjectディレクトリに言語ディレクトリをコピーします。
言語ディレクトリに独自の言語ファイルを追加することもできます。 $mail->ErrorInfo
を使用しています
別のホストのメールサーバーを使用してメールを送信できますが、これには最初に認証が必要です。たとえば、Gmailのメールサーバーからメールを送信するには、Gmailアカウントが必要です。SMTPは、メールクライアントがメールリクエストをメールサーバーに送信するために使用されるプロトコルです。メールサーバーがメールを検証した後、ターゲットメールサーバーに送信されます。
<code>Array ( [type] => 2 [message] => mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() [file] => OUR_PATH \vendor\phpmailer\phpmailer\src\PHPMailer.php [line] => 863 )</code>
以下は、Gmail Mail Serverからドメインからメールを送信する例です。コードを実行するためにローカルサーバーは必要ありません。 SMTPプロトコルを使用します:
composer require phpmailer/phpmailer
GmailにはSMTPを介してTLS暗号化が必要なため、それに応じて設定します。 SMTPを介して送信する前に、暗号化タイプが必要かどうか、および認証が必要な場合は、ユーザー名とパスワードも必要な場合、ホスト名、ポート番号を確認する必要があります。 Gmailで2要素認証を有効にしても、ユーザー名/パスワードでSMTPを使用することはできないことに注意してください。代わりに、追加の構成が必要です。
ローカルメールの代わりにリモートSMTPを使用することの大きな利点の1つは、PHPの関数を使用してメールを送信し、送信者アドレスドメインをローカルドメイン名(サーバー名)とは異なるものに設定する場合、受信者は受信者の場合です。メールサーバーの攻撃フィルターは、スパムとしてマークされます。たとえば、送信者アドレスname@gmail.comを使用してHostname Example.comを備えたサーバーからname@yahoo.comにメールを送信すると、Yahooのサーバーはスパムとしてマークするか、ユーザーにメッセージを表示します。メッセージのソースはexample.comであるため、メッセージを信頼するためには、gmail.comから表示されます。 name@gmail.comを持っていますが、Yahooにはこれを知る方法がありません。 mail()
結論
リポジトリWikiまたは公式ドキュメントで、このライブラリに関するAPIについて学ぶことができます。
PHPライブラリの依存関係に悩まされていますか?画面録音を見て、作曲家がそれを管理するのに役立つ方法を確認してください。phpmailer
に関するよくある質問
mail()
phpmailerをインストールする方法は? Composerを使用してphpmailerをインストールするか、Githubからライブラリを直接ダウンロードすることもできます。詳細なインストール手順は、PHPMailerドキュメントに記載されています。
phpmailerは自由に使用できますか?はい、PHPMailerはオープンソースであり、LGPLライセンスの下でリリースされています。つまり、オープンソースおよび商業プロジェクトで無料で利用できます。
phpmailerのシステム要件は何ですか? PHPMailerは、PHP 5.5以降と互換性があります。 Webホスティング環境がこれらのPHPバージョンをサポートしていることを確認してください。
phpmailerを使用して電子メールを送信する方法は? phpmailerクラスのインスタンスを作成し、SMTPサーバーの詳細や電子メールコンテンツなどの必要なプロパティを設定して、
メソッドを呼び出すことにより、phpmailerを使用して電子メールを送信できます。phpmailerはメールで添付ファイルを処理できますか?はい、PHPMailerは、メールに添付ファイルを追加する方法を提供します。サーバーまたはリモートの場所からファイルを添付できます。
はい、phpmailerを使用すると、プレーンテキストとHTML形式で電子メールを送信できます。それに応じてメッセージの種類とフォーマットを設定できます。プレーンテキストメールは、非HTMLメールクライアントに適しています。
phpmailerを使用して、非HTMLメールクライアントにプレーンテキストメールを送信できますか?
はい、phpmailerを使用すると、HTMLメールの代替としてプレーンテキストメールを送信できます。それに応じてメッセージの種類とフォーマットを設定できます。プレーンテキストメールは、非HTMLメールクライアントに適しています。
sendmailなどの非SMTPメールサーバーでphpmailerを使用できますか?はい、PHPMailerは、SMTP、
、およびその他のカスタムメソッドを含むさまざまな電子メール転送方法をサポートしているため、さまざまな種類のメールサーバーで使用できます。 mail()
以上がPHPMailerを使用してPHPで電子メールを送信しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。