Home PHP Framework ThinkPHP How to use ThinkPHP6 for email subscription and push?

How to use ThinkPHP6 for email subscription and push?

Jun 12, 2023 am 08:27 AM
thinkphp E-mail Subscriptions Push

With the rapid development of the Internet, email, as the most traditional and stable communication tool, has become increasingly important in various industries. As developers, how to provide users with reliable and efficient email subscription and push services has become a problem that we need to think about and solve. This article will introduce how to use the ThinkPHP6 framework for email subscription and push operations. I hope it will be helpful to everyone.

  1. Preparation work

First, we need to install PHP, Apache/Nginx and other web servers, as well as MySQL and other databases on the local installation or remote server. At the same time, we need to use the SMTP protocol to send emails, so we also need an SMTP server account and password.

  1. Install the framework and extension pack

Before proceeding with specific operations, we need to use composer to install the ThinkPHP6 framework and extension pack. Enter the following command on the command line to install.

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
Copy after login

The first command is to install the ThinkPHP6 framework, the second command is to download the PHPMailer extension package, and the third command is to copy the PHPMailer extension package to the vendor directory of ThinkPHP6.

  1. Configure email and subscription information

Before performing the email subscription function, we need to configure the SMTP server account and password in the .env file As well as the sender's name and address so that the program can send the email smoothly. At the same time, we also need to create a new subscription information table to store the user's subscription information. In the ThinkPHP6 framework, we can use the migration command to create a subscription information table named subscribe_info.

php think migrate:run --seed
Copy after login

After executing the above command, we need to add the following fields to the subscribe_info table:

  • id: primary key, auto-increment
  • email: User’s mailbox
  • is_subscribed: Whether to subscribe to emails
  1. Writing the subscription page

When we complete the configuration file and subscription information After the table is created, we need to start writing the subscription page. In the ThinkPHP6 framework, we can use index.php and index.html in the tp6/public directory for page development. For the convenience of presentation, here we add a simple form directly to index.html for inputting the user's email address and submitting it.

<!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>
Copy after login

After the user submits the form, we need to save the email address entered by the user into the subscription information table for email push.

  1. Writing Subscription API

In order to save the email address entered by the user into the subscription information table, we need to write a file called Subscribe.php API. In the ThinkPHP6 framework, we can use the tp6/application/api directory for API development. Below is a simple Subscribe.php file.

<?php
namespace apppicontroller;

use appcommonmodelSubscribeInfo;
use PHPMailerPHPMailerPHPMailer;
use thinkacadeConfig;
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' => '订阅成功'];
    }
}
Copy after login

In the above code, we first obtain the email address entered by the user from the request, and check whether there is already a record of the user in the subscription information table. If not, create a new record; if it already exists, set the is_subscribed field of the record to true.

Next, we can use the PHPMailer extension package to send emails. We first add the following configuration information to the mail.php file in the config directory.

# 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',
];
Copy after login

In the above configuration information, we filled in the address, port, account, password and other information of the SMTP server. In the Subscribe.php file, we can read this information and use the PHPMailer extension package to send emails. After successfully sending the email, we return a successful subscription message to the user.

  1. Write an email push script

After the user successfully subscribes to the email, we need to write an email push script so that the latest article content can be pushed to the subscribed user regularly. In the ThinkPHP6 framework, we can use the tp6/application/command directory to develop command scripts. The following is a simple MailPush.php script.

# MailPush.php

namespace appcommand;

use appcommonmodelSubscribeInfo;
use PHPMailerPHPMailerPHPMailer;
use thinkconsoleCommand;
use thinkconsoleInput;
use thinkconsoleOutput;
use thinkacadeConfig;

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();
        }
    }
}
Copy after login

In the above code, we first obtain the subscribed user information from the subscription information table, and then send the email through the PHPMailer extension package. We also need to add the path to the command script in config/app.php.

# app.php
<?php
return [
    // ...
    'commands'       => [
        'appcommandMailPush'
    ],
    // ...
];
Copy after login
  1. Configuring scheduled tasks

After we write the email push script, we need to configure the scheduled task so that the email push script can be executed regularly. Under Linux systems, we can use the crontab command to configure scheduled tasks. Enter the following command on the command line to open the scheduled task configuration file.

crontab -e
Copy after login

In the scheduled task configuration file, we add the following content, which means that the email push script will be executed at 6 o'clock every afternoon.

0 18 * * * /path/to/php /path/to/tp6/think mail
Copy after login

After completing the above configuration, we can fully use the ThinkPHP6 framework for email subscription and push. After the user enters their email address and submits a subscription application, the email push script will send the latest article content to the user at the specified time of the scheduled task. Hope it helps everyone.

The above is the detailed content of How to use ThinkPHP6 for email subscription and push?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Have Crossplay?
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to run thinkphp project How to run thinkphp project Apr 09, 2024 pm 05:33 PM

To run the ThinkPHP project, you need to: install Composer; use Composer to create the project; enter the project directory and execute php bin/console serve; visit http://localhost:8000 to view the welcome page.

There are several versions of thinkphp There are several versions of thinkphp Apr 09, 2024 pm 06:09 PM

ThinkPHP has multiple versions designed for different PHP versions. Major versions include 3.2, 5.0, 5.1, and 6.0, while minor versions are used to fix bugs and provide new features. The latest stable version is ThinkPHP 6.0.16. When choosing a version, consider the PHP version, feature requirements, and community support. It is recommended to use the latest stable version for best performance and support.

How to run thinkphp How to run thinkphp Apr 09, 2024 pm 05:39 PM

Steps to run ThinkPHP Framework locally: Download and unzip ThinkPHP Framework to a local directory. Create a virtual host (optional) pointing to the ThinkPHP root directory. Configure database connection parameters. Start the web server. Initialize the ThinkPHP application. Access the ThinkPHP application URL and run it.

How to push friends' business cards on WeChat How to push friends' business cards on WeChat Mar 30, 2024 pm 07:16 PM

Business cards are a method that can be used to push friends in the software WeChat. Some users don’t know how to push friends’ business cards in WeChat. Just click on the friend’s personal page, select More to recommend them to friends and send them. This article is about WeChat push. The introduction of the friend’s business card method can tell you the specific content. The following is a detailed introduction, take a look! WeChat usage tutorial: How to push a friend’s business card on WeChat? Answer: Click on the friend’s personal page, select More to recommend them to friends and send them. Details: 1. Click on the friend you want to push a business card to. 2. Click the [More] option in the upper right corner. 3. Then click [Recommend TA to friends]. 4. Select the friend you want to send a business card to. 5. Click [Send].

Which one is better, laravel or thinkphp? Which one is better, laravel or thinkphp? Apr 09, 2024 pm 03:18 PM

Performance comparison of Laravel and ThinkPHP frameworks: ThinkPHP generally performs better than Laravel, focusing on optimization and caching. Laravel performs well, but for complex applications, ThinkPHP may be a better fit.

Development suggestions: How to use the ThinkPHP framework to implement asynchronous tasks Development suggestions: How to use the ThinkPHP framework to implement asynchronous tasks Nov 22, 2023 pm 12:01 PM

"Development Suggestions: How to Use the ThinkPHP Framework to Implement Asynchronous Tasks" With the rapid development of Internet technology, Web applications have increasingly higher requirements for handling a large number of concurrent requests and complex business logic. In order to improve system performance and user experience, developers often consider using asynchronous tasks to perform some time-consuming operations, such as sending emails, processing file uploads, generating reports, etc. In the field of PHP, the ThinkPHP framework, as a popular development framework, provides some convenient ways to implement asynchronous tasks.

How to install thinkphp How to install thinkphp Apr 09, 2024 pm 05:42 PM

ThinkPHP installation steps: Prepare PHP, Composer, and MySQL environments. Create projects using Composer. Install the ThinkPHP framework and dependencies. Configure database connection. Generate application code. Launch the application and visit http://localhost:8000.

How to implement message push and notification in uniapp application How to implement message push and notification in uniapp application Oct 18, 2023 am 09:19 AM

Uniapp is a cross-platform development framework based on Vue.js that can be used to develop applications that run on multiple platforms at the same time. When implementing message push and notification functions, Uniapp provides some corresponding plug-ins and APIs. The following will introduce how to use these plug-ins and APIs to implement message push and notification functions. 1. Message push To implement the message push function, we can use the uni-push plug-in provided by Uniapp. This plug-in is based on Tencent Cloud Push Service and can push messages on multiple platforms

See all articles