インターネットの急速な発展に伴い、最も伝統的で安定したコミュニケーション ツールとしての電子メールは、さまざまな業界でますます重要になってきています。開発者として、信頼性が高く効率的な電子メール サブスクリプションとプッシュ サービスをユーザーに提供する方法は、考えて解決する必要がある問題となっています。この記事では、ThinkPHP6 フレームワークを使用してメールの購読とプッシュ操作を行う方法を紹介しますので、皆様の参考になれば幸いです。
まず、PHP、Apache/Nginx、その他の Web サーバー、および MySQL やその他のデータベースをローカル インストールまたはリモート サーバーにインストールする必要があります。 。同時に、SMTP プロトコルを使用して電子メールを送信する必要があるため、SMTP サーバーのアカウントとパスワードも必要です。
特定の操作に進む前に、composer を使用して ThinkPHP6 フレームワークと拡張パックをインストールする必要があります。コマンドラインに次のコマンドを入力してインストールします。
composer create-project topthink/think tp6 --prefer-dist wget https://github.com/phpmailer/phpmailer/archive/master.zip unzip master.zip cp -r phpmailer-master/ tp6/vendor/phpmailer/phpmailer
最初のコマンドは ThinkPHP6 フレームワークをインストールし、2 番目のコマンドは PHPMailer 拡張パッケージをダウンロードし、3 番目のコマンドは PHPMailer 拡張パッケージを ThinkPHP6 のベンダー ディレクトリにコピーします。
電子メール サブスクリプション機能を実行する前に、.env
で SMTP サーバー アカウントとパスワードを構成する必要があります。ファイルのほか、プログラムが電子メールをスムーズに送信できるように、送信者の名前とアドレスも含まれます。同時に、ユーザーのサブスクリプション情報を保存するための新しいサブスクリプション情報テーブルを作成する必要もあります。 ThinkPHP6 フレームワークでは、migration コマンドを使用して、subscribe_info という名前のサブスクリプション情報テーブルを作成できます。
php think migrate:run --seed
上記のコマンドを実行した後、subscribe_info
テーブルに次のフィールドを追加する必要があります:
完了したら構成ファイルとサブスクリプション情報 テーブルの作成後、サブスクリプション ページの作成を開始する必要があります。 ThinkPHP6 フレームワークでは、ページ開発に tp6/public
ディレクトリ内の index.php
および index.html
を使用できます。プレゼンテーションの便宜上、ここではユーザーの電子メール アドレスを入力して送信するための単純なフォームを index.html
に直接追加します。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>邮件订阅</title> </head> <body> <h1>邮件订阅</h1> <div> <form method="POST" action="{:url('/api/subscribe/submit')}"> 邮箱:<input name="email" type="email" required> <button type="submit">提交</button> </form> </div> </body> </html>
ユーザーがフォームを送信した後、ユーザーが入力した電子メール アドレスを電子メール プッシュ用のサブスクリプション情報テーブルに保存する必要があります。
ユーザーが入力した電子メール アドレスをサブスクリプション情報テーブルに保存するには、Subscribe というファイルを書き込む必要があります。 php
API。 ThinkPHP6 フレームワークでは、API 開発に tp6/application/api
ディレクトリを使用できます。以下は、単純な Subscribe.php
ファイルです。
<?php namespace apppicontroller; use appcommonmodelSubscribeInfo; use PHPMailerPHPMailerPHPMailer; use thinkacadeConfig; use thinkRequest; class Subscribe { /** * 用户提交订阅信息 * @param Request $request [description] * @return [type] [description] */ public function submit(Request $request) { $email = $request->param('email'); $subscribeInfo = SubscribeInfo::where('email', $email)->find(); if (empty($subscribeInfo)) { $subscribeInfo = new SubscribeInfo(); $subscribeInfo->email = $email; $subscribeInfo->is_subscribed = true; $subscribeInfo->save(); } else { $subscribeInfo->is_subscribed = true; $subscribeInfo->save(); } $mail = new PHPMailer(true); $mail->SMTPDebug = 1; $mail->isSMTP(); $mail->CharSet = 'utf-8'; $mail->SMTPAuth = true; $mail->SMTPSecure = 'ssl'; $mail->Host = Config::get('mail_host'); $mail->Port = Config::get('mail_port'); $mail->Username = Config::get('mail_username'); $mail->Password = Config::get('mail_password'); $mail->setFrom(Config::get('mail_from_email'), Config::get('mail_from_name')); $mail->addAddress($email); $mail->Subject = '欢迎订阅本站邮件'; $mail->Body = '你好,欢迎订阅本站邮件'; $mail->send(); return ['code' => 0, 'message' => '订阅成功']; } }
上記のコードでは、まずリクエストからユーザーが入力した電子メール アドレスを取得し、サブスクリプション情報テーブルにそのユーザーのレコードが既に存在するかどうかを確認します。そうでない場合は、新しいレコードを作成し、すでに存在する場合は、レコードの is_subscribed フィールドを true に設定します。
次に、PHPMailer 拡張パッケージを使用して電子メールを送信できます。まず、次の構成情報を config
ディレクトリの mail.php
ファイルに追加します。
# mail.php <?php return [ 'mail_host' => 'smtp.exmail.qq.com', 'mail_port' => '465', 'mail_username' => 'xxx@xxx.com', 'mail_password' => 'xxxx', 'mail_from_email' => 'xxx@xxx.com', 'mail_from_name' => 'xxx', ];
上記の設定情報には、SMTP サーバーのアドレス、ポート、アカウント、パスワードなどの情報を入力しました。 Subscribe.php
ファイルでは、この情報を読み取り、PHPMailer 拡張パッケージを使用して電子メールを送信できます。電子メールの送信が成功すると、購読成功のメッセージがユーザーに返されます。
ユーザーが電子メールを正常に購読した後、最新の記事コンテンツをプッシュできるように電子メール プッシュ スクリプトを作成する必要があります。定期購読ユーザー。 ThinkPHP6 フレームワークでは、tp6/application/command
ディレクトリを使用してコマンド スクリプトを開発できます。以下は、単純な MailPush.php
スクリプトです。
# MailPush.php namespace appcommand; use appcommonmodelSubscribeInfo; use PHPMailerPHPMailerPHPMailer; use thinkconsoleCommand; use thinkconsoleInput; use thinkconsoleOutput; use thinkacadeConfig; class MailPush extends Command { /** * The configuration. * * @var array */ private $config; /** * @inheritdoc */ protected function configure() { $this->setName('mail') ->setDescription('Push article to subscribers'); } /** * Execute the console command. * * @param Input $input * @param Output $output * @return void */ public function execute(Input $input, Output $output) { $subscribeInfos = SubscribeInfo::where('is_subscribed', true)->select(); if ($subscribeInfos) { $mail = new PHPMailer(true); $mail->SMTPDebug = 1; $mail->isSMTP(); $mail->CharSet = 'utf-8'; $mail->SMTPAuth = true; $mail->SMTPSecure = 'ssl'; $mail->Host = Config::get('mail_host'); $mail->Port = Config::get('mail_port'); $mail->Username = Config::get('mail_username'); $mail->Password = Config::get('mail_password'); $mail->setFrom(Config::get('mail_from_email'), Config::get('mail_from_name')); $mail->isHTML(true); $mail->Subject = '本站新文章通知'; $mail->Body = '亲爱的订阅者,我们有新的文章发布了,快来看看吧!'; foreach ($subscribeInfos as $subscribeInfo) { $mail->addAddress($subscribeInfo->email); } $mail->send(); } } }
上記のコードでは、まず購読情報テーブルから購読ユーザー情報を取得し、次に PHPMailer 拡張パッケージを通じて電子メールを送信します。また、config/app.php
にコマンド スクリプトへのパスを追加する必要があります。
# app.php <?php return [ // ... 'commands' => [ 'appcommandMailPush' ], // ... ];
電子メール プッシュ スクリプトを作成した後、電子メール プッシュ スクリプトが定期的に実行できるようにスケジュールされたタスクを構成する必要があります。 Linux システムでは、crontab
コマンドを使用して、スケジュールされたタスクを構成できます。コマンドラインに次のコマンドを入力して、スケジュールされたタスク構成ファイルを開きます。
crontab -e
スケジュールされたタスク構成ファイルに、次の内容を追加します。これは、電子メール プッシュ スクリプトが毎日午後 6 時に実行されることを意味します。
0 18 * * * /path/to/php /path/to/tp6/think mail
上記の設定を完了すると、電子メールのサブスクリプションとプッシュに ThinkPHP6 フレームワークを完全に使用できるようになります。ユーザーが電子メール アドレスを入力して購読申し込みを送信すると、電子メール プッシュ スクリプトによって、スケジュールされたタスクの指定された時間に最新の記事コンテンツがユーザーに送信されます。皆さんのお役に立てれば幸いです。
以上が電子メールの購読とプッシュに ThinkPHP6 を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。