ホームページ >バックエンド開発 >PHPチュートリアル >phplist と phpmailer (組み合わせて使用) を設定して Gmail 経由でメールを送信する方法、phplistphpmailer_PHP チュートリアル
この記事では、Gmailでメールを送信するためのphplistとphpmailerの設定方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
一般的に、Gmail メールボックスを使用していない限り、phplist を使用してメールを送信するには、以前の「PHP 一括メール システム phplist の設定方法の詳細なまとめ」に従って設定するだけで済みます。しかし、あなたが私のように不運で、gmail のような SSL 認証を備えた電子メールを使用しなければならない場合は、おめでとうございます。数日間試した結果、ついに gmail と phplist を組み合わせることができました。私と同じ状況にある同志に役立つことを願って、ここで私の経験を共有します。また、phplist の中核は phpmailer であり、私が提案した解決策は主に phpmailer を中心に展開しているため、gmail 経由でメールを送信するために phpmailer を使用する必要があるが成功しない人も、私の方法を参考にしていただけます。
まず、「PHP一括メールシステムphplistの設定方法の詳細まとめ」の設定方法に従って、Gmailでメールを送信します。 テストメールを送信すると、phplistはメールの送信に失敗したことを報告し、エラーメッセージが表示されます。イベント ログ (eventlog) の「メーラー エラー: 次の送信元アドレスに失敗しました:...」というメッセージが表示されます。これは、送信者アドレスに問題があることを意味します。 SMTPサーバーには接続できているが、メール送信に問題がある可能性はありますか? SMTP サーバーに接続しているかどうかをテストする方法を使用できます。 config.php ファイルに意図的に間違った電子メール アカウントのパスワードを入力しましたが、テスト電子メールを送信したときにも同じエラーが報告されたようです。 SMTP サーバーにまったく接続されていませんでした。この phplist エラー レポートも...
SMTP サーバーに接続されていないことがわかっている場合は、メールを送信する phplist のコア (もう 1 つの有名なオープン ソース ソフトウェア phpmailer) に問題があることを意味します。
Gmail メールを送信する phpmailer に関する情報をオンラインで確認したところ、古いバージョンの phpmailer は SSL 検証をサポートしておらず、Gmail の SMTP サーバーに接続できないという意見があったことがわかりました。しかし、この問題は phpmailer の新しいバージョンでは解決されています。
lists/admin/phpmailer/ChangeLog.txt を開くと、phplist に付属する phpmailer の最新バージョンが 2005 年にリリースされたバージョン 1.73 であることがわかります。これは確かに新しいものではありません。そこで、phpmailer の公式 Web サイトにアクセスし、最新の 5.1 をダウンロードしました。
私はまず、phpmailer の新しいバージョンが SSL 検証の問題をどのように解決するかを調べたかったので、独自のドキュメントをいくつか見てみたところ、PHPMailer_v5.1/docs の下に use_gmail.txt を見つけました。これは公式のもののようです。比較については、Gmail の問題に注目しており、参考のために特別にデモを作成しました。開いてみると確かに完成したphpページファイルなので、基本的にはファイル拡張子やメールのユーザー名、パスワードを変更するだけで使用できますが、このように変更しただけではテストにアクセスする際にエラーが報告されます。公式のデモがわかりません。実際には、未定義の関数が呼び出され、不要なコンポーネントが含まれているのはなぜでしょうか。メールが正常に送信できるかテストしたいだけなので、次のように変更しました:
リーリーこのページにアクセスすると、依然としてエラーが報告されていることがわかり、本当にイライラします。なぜ公式デモを実行できないのでしょうか?
このとき、PHPMailer_v5.1/docs に Note_for_SMTP_debugging.txt というファイルがあることを思い出しました。SMTP サーバーに接続できないことが心配なので、デバッグ方法を確認してみます。その中で提供されます。
ファイルを開いて最初の行を読んだとき、まさにこれが私に必要なものだ!と目が輝きました。実は、使用方法もとても簡単で、ただ
リーリー前方挿入
リーリーエラーを報告すると、より詳細なエラー情報を取得できます。本当に良いものです^_^
このように変更した後、ページにアクセスすると、より詳細な手順が表示されました - 「SMTP -> エラー: サーバーへの接続に失敗しました: ソケット トランスポート "ssl" が見つかりません - 設定時に有効にするのを忘れましたか?」 PHP?(28593608)」。
それで、php 設定ファイル (C://Windows/php.ini) を開いて ssl を検索したところ、案の定、ssl に関する拡張子が見つかりました
リーリー未開封です。コメントの前にある「;」を削除し、サーバーを再起動してテスト ページ use_gmail.php に再度アクセスしますが、同じエラー メッセージが表示されます。
他に方法はありません。PHP と Apache の SSL 設定に関する記事をオンラインで調べたところ、SSL 拡張モジュールを有効にするだけでは十分ではなく、Windows 環境での設定方法も非常に複雑であることがわかりました。シンプル — PHP インストール ディレクトリで ssleay32.dll と libeay32.dll を見つけて、Windows の system32 ディレクトリにコピーします (php.ini で extension=php_openssl.dll をオンにする必要があります)。もちろん、system32 ディレクトリを「汚染」したくない場合は、ssleay32.dll と libeay32.dll がシステム パス内にある限り、環境変数を変更できます。 (Windows オペレーティング システムを使用していない場合は、オンラインにアクセスして、オペレーティング システムに合わせて SSL を構成する方法を見つけてください。見つけるのは難しくありません)
今回はuse_gmail.phpにアクセスしてみたところ、無事送信できました!
在此基础上,我们的phplist的问题也可以解决了:用新版phpmailer中的class.phpmailer.php和class.smtp.php覆盖lists/admin/phpmailer中的对应文件,然后修改lists/admin/class.phplistmailer.php中36行左右处的
$this->SMTPAuth = true; $this->Helo = getConfig("website"); $this->Host = PHPMAILERHOST;
为:
$this->IsSMTP(); # Add $this->SMTPAuth = true; $this->SMTPSecure = "ssl"; # Add $this->Helo = getConfig("website"); $this->Host = PHPMAILERHOST; $this->Port = 465 # Add
其中phpmailer默认端口号为25,是大多数smtp服务器的端口号,但是gmail使用的端口号是465,所以要重新设置。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。