ホームページ > バックエンド開発 > PHPチュートリアル > PHPMailerを使用してPHPで電子メールを送信します

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

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-02-08 10:37:09
オリジナル
646 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート