目次
コアポイント
phpmailerとphpmail()関数の比較
添付ファイルを含む電子メールを送信します
phpmailerでは、Pop-be-smtp検証を許可してメールを送信します。つまり、POPを使用して認証し、SMTPを使用してメールを送信できます。残念ながら、PHPMailerは、POP3プロトコルを使用してメールサーバーからメールの取得をサポートしていません。メールのみの送信に限定されます。
あなたがPHP開発者である場合、プログラムで電子メールの送信を避けることはほとんど不可能です。 MandrillやSendGridなどのサードパーティサービスを選択できますが、これは単に実行可能ではない場合があり、自分のメール送信ライブラリを書くときはさらにそうです。これは、PHPMailerとその代替案(Zend Mail、Swift Maelerなど)が出てくる場所です。
phpmailerとは何ですか? PHPMailerは、PHPアプリケーションから電子メールを送信するための人気のあるオープンソースPHPライブラリです。これは、SMTP、
ホームページ バックエンド開発 PHPチュートリアル PHPMailerを使用してPHPで電子メールを送信します

PHPMailerを使用してPHPで電子メールを送信します

Feb 08, 2025 am 10:37 AM

phpmailer:phpメールを送信するための強力なツール

PHPMailerは、2001年にリリースされて以来、PHP開発者がプロ​​グラムの電子メールを送信するための優先オプションの1つであり、SwiftMailerなどの他の人気のあるライブラリと同等です。この記事では、PHPMailerがPHPの組み込みmail()機能よりも優れている理由を説明し、コードの例を提供します。

Sending Emails in PHP with PHPMailer

コアポイント

  • PHPMailerは、オブジェクト指向のインターフェイス、より簡単なHTMLおよびアタッチメント処理、非ローカルメールサーバーの使用など、PHPの組み込みmail()関数よりも多くの機能と柔軟性を提供する人気のあるオープンソースPHPメール配信ライブラリです。能力。
  • PHPMailerはComposerを使用してインストールでき、WordPress、Drupal、Joomlaなどの人気のあるPHPコンテンツ管理システムで使用できます。
  • このライブラリは、40を超える言語でエラーメッセージを印刷できる強力なエラー処理メカニズムを提供し、SSLおよびTLS認証だけでなくSMTPプロトコルサポートを統合します。
  • メールの送信に加えて、PHPMailerは添付ファイルの追加、HTMLまたはプレーンテキストバージョンのメールを送信し、SMTPを使用して非ローカルサーバーからメールを送信することもサポートしますが、POP3プロトコルを使用してメールサーバーからメールの取得をサポートしていません。

phpmailerとphpmail()関数の比較

ほとんどの場合、PHPMailerはPHPビルトインmail()関数に代わるものですが、多くの場合、mail()関数の柔軟性はニーズを満たすのに十分ではありません。

最初に、phpmailerはオブジェクト指向のインターフェイスを提供しますが、mail()関数はオブジェクト指向ではありません。通常、PHP開発者は、mail()関数を使用して電子メールを送信するときに$headers文字列を作成することを好みません。これには多くのエスケープ操作が必要です。 PHPMailerはこのプロセスを簡素化します。 mail()関数を使用して添付ファイルとHTMLベースのメールを送信する場合、開発者は複雑なコード(脱出、エンコード、フォーマット)を記述する必要があり、PHPMailerはこれを簡単にします。

さらに、mail()関数では、電子メールを送信するためにローカルメールサーバーが必要です。これは必ずしも簡単ではありません。認証が利用可能な場合、PHPMailerは非ローカルメールサーバー(SMTP)を使用できます。

その他の利点は次のとおりです

    メッセージの送信が失敗すると、40以上の言語でさまざまなエラーメッセージを印刷できます。
  • SMTPプロトコルサポートとSSLおよびTLS認証を統合します。
  • 非HTMLメールクライアントに別のプレーンテキストバージョンのメッセージを送信できます。
  • それを安全で最新の状態に保つために、開発者の非常に活発なコミュニティがあります。
PHPMailerは、WordPress、Drupal、Joomlaなどの一般的なPHPコンテンツ管理システムでも使用されています。

phpmailerのインストール

phpmailerは、Composer:

を使用してインストールできます

composer require phpmailer/phpmailer
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
phpmailer

を使用してローカルWebサーバーから電子メールを送信します

以下は、PHPMailerを使用してローカルWebサーバーからメールを送信する最も簡単な例です。
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;
}
?>
ログイン後にコピー
ここでは、2つのファイル-file.txt(スクリプトと同じディレクトリにある)と画像/profile.png(スクリプトディレクトリの画像ディレクトリにある)を添付します。

メールに添付ファイルを追加するには、ファイルパスをパラメーターとして渡すことにより、phpmailerオブジェクトの

関数を呼び出すだけです。複数のファイルを添付するには、複数回呼び出す必要があります。 addAttachment

トラブルシューティング

2つの例では、デバッグのために

PHPMailerのクラスを使用したため、エラーが発生する可能性のある問題をデバッグするのに役立ちます。また、PHPMailerコンストラクターにパラメーターExceptionを追加して、高レベルでより記述的な例外を出力しました。 true

使用しているシステムによっては、バックグラウンドで

関数を実行することに関連する最大のエラーがあります。 mail()

メールエラー:メール関数をインスタンス化することはできません。

より詳細なエラー情報が必要な場合は、

句に以下を追加することもできます。

通常、メール関数の問題は、欠落しているメールサーバーの設定に関連しています。 catch

これはおそらく私たちが抱えている最も一般的な問題であり、SMTPを使用して簡単に解決できます。
<?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());
ログイン後にコピー
43の異なる言語でエラーメッセージを返すことができます。

異なる言語でエラーメッセージを表示するには、PHPMailerのソースコードからProjectディレクトリに言語ディレクトリをコピーします。

たとえば、ロシア語でエラーメッセージを返すには、次のメソッドコールを使用してphpmailerオブジェクトをロシア語に設定します。

言語ディレクトリに独自の言語ファイルを追加することもできます。 $mail->ErrorInfo

smtp

を使用しています

別のホストのメールサーバーを使用してメールを送信できますが、これには最初に認証が必要です。たとえば、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()

pop3を使用して電子メールを取得します また、

phpmailerでは、Pop-be-smtp検証を許可してメールを送信します。つまり、POPを使用して認証し、SMTPを使用してメールを送信できます。残念ながら、PHPMailerは、POP3プロトコルを使用してメールサーバーからメールの取得をサポートしていません。メールのみの送信に限定されます。

結論

あなたがPHP開発者である場合、プログラムで電子メールの送信を避けることはほとんど不可能です。 MandrillやSendGridなどのサードパーティサービスを選択できますが、これは単に実行可能ではない場合があり、自分のメール送信ライブラリを書くときはさらにそうです。これは、PHPMailerとその代替案(Zend Mail、Swift Maelerなど)が出てくる場所です。

リポジトリWikiまたは公式ドキュメントで、このライブラリに関するAPIについて学ぶことができます。

PHPライブラリの依存関係に悩まされていますか?画面録音を見て、作曲家がそれを管理するのに役立つ方法を確認してください。

phpmailer

に関するよくある質問

phpmailerとは何ですか? PHPMailerは、PHPアプリケーションから電子メールを送信するための人気のあるオープンソースPHPライブラリです。これは、SMTP、

、またはその他の電子メール送信方法を介して電子メールを送信するためのシンプルで柔軟な方法を提供します。

mail() phpmailerをインストールする方法は? Composerを使用してphpmailerをインストールするか、Githubからライブラリを直接ダウンロードすることもできます。詳細なインストール手順は、PHPMailerドキュメントに記載されています。

phpmailerは自由に使用できますか?はい、PHPMailerはオープンソースであり、LGPLライセンスの下でリリースされています。つまり、オープンソースおよび商業プロジェクトで無料で利用できます。

phpmailerのシステム要件は何ですか? PHPMailerは、PHP 5.5以降と互換性があります。 Webホスティング環境がこれらのPHPバージョンをサポートしていることを確認してください。

phpmailerを使用して電子メールを送信する方法は? phpmailerクラスのインスタンスを作成し、SMTPサーバーの詳細や電子メールコンテンツなどの必要なプロパティを設定して、

メソッドを呼び出すことにより、phpmailerを使用して電子メールを送信できます。

phpmailerはメールで添付ファイルを処理できますか?はい、PHPMailerは、メールに添付ファイルを追加する方法を提供します。サーバーまたはリモートの場所からファイルを添付できます。

phpmailerでHTMLメールを送信できますか?

はい、phpmailerを使用すると、プレーンテキストとHTML形式で電子メールを送信できます。それに応じてメッセージの種類とフォーマットを設定できます。プレーンテキストメールは、非HTMLメールクライアントに適しています。

phpmailerを使用して、非HTMLメールクライアントにプレーンテキストメールを送信できますか?

はい、phpmailerを使用すると、HTMLメールの代替としてプレーンテキストメールを送信できます。それに応じてメッセージの種類とフォーマットを設定できます。プレーンテキストメールは、非HTMLメールクライアントに適しています。

sendmailなどの非SMTPメールサーバーでphpmailerを使用できますか?はい、PHPMailerは、SMTP、

、およびその他のカスタムメソッドを含むさまざまな電子メール転送方法をサポートしているため、さまざまな種類のメールサーバーで使用できます。 mail()

Sending Emails in PHP with PHPMailer

以上がPHPMailerを使用してPHPで電子メールを送信しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHP 8.1の列挙(列挙)とは何ですか? PHP 8.1の列挙(列挙)とは何ですか? Apr 03, 2025 am 12:05 AM

php8.1の列挙関数は、指定された定数を定義することにより、コードの明確さとタイプの安全性を高めます。 1)列挙は、整数、文字列、またはオブジェクトであり、コードの読みやすさとタイプの安全性を向上させることができます。 2)列挙はクラスに基づいており、トラバーサルや反射などのオブジェクト指向の機能をサポートします。 3)列挙を比較と割り当てに使用して、タイプの安全性を確保できます。 4)列挙は、複雑なロジックを実装するためのメソッドの追加をサポートします。 5)厳密なタイプのチェックとエラー処理は、一般的なエラーを回避できます。 6)列挙は魔法の価値を低下させ、保守性を向上させますが、パフォーマンスの最適化に注意してください。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? phpstormでCLIモードをデバッグする方法は? Apr 01, 2025 pm 02:57 PM

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

See all articles