Rumah rangka kerja php ThinkPHP Bagaimana untuk menggunakan ThinkPHP6 untuk langganan e-mel dan tolak?

Bagaimana untuk menggunakan ThinkPHP6 untuk langganan e-mel dan tolak?

Jun 12, 2023 am 08:27 AM
thinkphp Langganan e-mel menolak

Dengan perkembangan pesat Internet, e-mel, sebagai salah satu alat komunikasi yang paling tradisional dan stabil, telah menjadi semakin penting dalam pelbagai industri. Sebagai pembangun, cara menyediakan pengguna dengan perkhidmatan langganan dan tolak e-mel yang boleh dipercayai dan cekap telah menjadi masalah yang perlu kami fikirkan dan selesaikan. Artikel ini akan memperkenalkan cara menggunakan rangka kerja ThinkPHP6 untuk langganan e-mel dan operasi tolak saya harap ia akan membantu semua orang.

  1. Persediaan

Pertama sekali, kita perlu memasang PHP, Apache/Nginx dan pelayan web lain, serta MySQL dan pangkalan data lain pada pemasangan tempatan atau alat kawalan jauh pelayan. Pada masa yang sama, kami perlu menggunakan protokol SMTP untuk menghantar e-mel, jadi kami juga memerlukan akaun pelayan SMTP dan kata laluan.

  1. Pasang rangka kerja dan pek sambungan

Sebelum meneruskan operasi tertentu, kami perlu menggunakan komposer untuk memasang rangka kerja ThinkPHP6 dan pek sambungan. Masukkan arahan berikut pada baris arahan untuk dipasang.

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
Salin selepas log masuk

Antaranya, arahan pertama ialah memasang rangka kerja ThinkPHP6, arahan kedua ialah memuat turun pakej sambungan PHPMailer, dan arahan ketiga ialah menyalin pakej sambungan PHPMailer ke direktori vendor ThinkPHP6.

  1. Konfigurasikan maklumat e-mel dan langganan

Sebelum melaksanakan fungsi langganan e-mel, kami perlu mengkonfigurasi akaun pelayan SMTP, kata laluan dan nama penghantar dalam fail .env dan alamat supaya program dapat menghantar e-mel dengan lancar. Pada masa yang sama, kami juga perlu mencipta jadual maklumat langganan baharu untuk menyimpan maklumat langganan pengguna. Dalam rangka kerja ThinkPHP6, kita boleh menggunakan arahan migrasi untuk mencipta jadual maklumat langganan bernama subscribe_info.

php think migrate:run --seed
Salin selepas log masuk

Selepas melaksanakan arahan di atas, kita perlu menambah medan berikut pada jadual subscribe_info:

  • id: kunci utama, auto-increment
  • e-mel: alamat e-mel pengguna
  • is_subscribed: Sama ada hendak melanggan e-mel
  1. Menulis halaman langganan

Apabila kami telah menyelesaikan penciptaan fail konfigurasi dan jadual maklumat langganan , kita perlu mula menulis halaman langganan. Dalam rangka kerja ThinkPHP6, kita boleh menggunakan tp6/public dan index.php dalam direktori index.html untuk membangunkan halaman. Untuk kemudahan pembentangan, di sini kami menambah borang ringkas terus di index.html untuk memasukkan alamat e-mel pengguna dan menyerahkannya.

<!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>
Salin selepas log masuk

Selepas pengguna menyerahkan borang, kami perlu menyimpan alamat e-mel yang dimasukkan oleh pengguna ke dalam jadual maklumat langganan untuk menolak e-mel.

  1. Menulis API langganan

Untuk menyimpan alamat e-mel yang dimasukkan oleh pengguna ke dalam jadual maklumat langganan, kami perlu menulis API bernama Subscribe.php. Dalam rangka kerja ThinkPHP6, kita boleh menggunakan direktori tp6/application/api untuk pembangunan API. Di bawah ialah fail Subscribe.php yang ringkas.

<?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' => '订阅成功'];
    }
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mendapatkan alamat e-mel yang dimasukkan oleh pengguna daripada permintaan, dan menyemak sama ada sudah ada rekod pengguna dalam jadual maklumat langganan. Jika tidak, buat rekod baharu jika ia sudah wujud, tetapkan medan is_subscribed rekod itu kepada benar.

Seterusnya, kita boleh menggunakan pakej sambungan PHPMailer untuk menghantar e-mel. Mula-mula kami menambah maklumat konfigurasi berikut pada fail config dalam direktori 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',
];
Salin selepas log masuk

Dalam maklumat konfigurasi di atas, kami mengisi alamat, port, nombor akaun, kata laluan dan maklumat lain pelayan SMTP. Dalam fail Subscribe.php, kami boleh membaca maklumat ini dan menggunakan pakej sambungan PHPMailer untuk menghantar e-mel. Selepas berjaya menghantar e-mel, kami mengembalikan mesej langganan yang berjaya kepada pengguna.

  1. Menulis skrip push e-mel

Selepas pengguna berjaya melanggan e-mel, kita perlu menulis skrip push e-mel supaya kandungan artikel terkini boleh ditolak ke pengguna yang dilanggan dengan kerap. Dalam rangka kerja ThinkPHP6, kita boleh menggunakan direktori tp6/application/command untuk membangunkan skrip arahan. Di bawah ialah skrip MailPush.php mudah.

# 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();
        }
    }
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mendapatkan maklumat pengguna yang dilanggan daripada jadual maklumat langganan, dan kemudian menghantar e-mel melalui pakej sambungan PHPMailer. Kita juga perlu menambah laluan kepada skrip arahan dalam config/app.php.

# app.php
<?php
return [
    // ...
    'commands'       => [
        'appcommandMailPush'
    ],
    // ...
];
Salin selepas log masuk
  1. Konfigurasikan tugas berjadual

Selepas kami menulis skrip push e-mel, kami perlu mengkonfigurasi tugasan berjadual supaya skrip push e-mel dapat dilaksanakan dengan kerap. Di bawah sistem Linux, kita boleh menggunakan perintah crontab untuk mengkonfigurasi tugas yang dijadualkan. Masukkan arahan berikut pada baris arahan untuk membuka fail konfigurasi tugas yang dijadualkan.

crontab -e
Salin selepas log masuk

Dalam fail konfigurasi tugas yang dijadualkan, kami menambah kandungan berikut, yang bermaksud bahawa skrip push e-mel akan dilaksanakan pada pukul 6 setiap petang.

0 18 * * * /path/to/php /path/to/tp6/think mail
Salin selepas log masuk

Selepas melengkapkan konfigurasi di atas, kami boleh menggunakan sepenuhnya rangka kerja ThinkPHP6 untuk langganan dan push e-mel. Selepas pengguna memasukkan alamat e-mel mereka dan menyerahkan permohonan langganan, skrip tolak e-mel akan menghantar kandungan artikel terkini kepada pengguna pada masa yang ditetapkan untuk tugasan yang dijadualkan. Semoga ia membantu semua orang.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan ThinkPHP6 untuk langganan e-mel dan tolak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menjalankan projek thinkphp Bagaimana untuk menjalankan projek thinkphp Apr 09, 2024 pm 05:33 PM

Untuk menjalankan projek ThinkPHP, anda perlu: memasang Komposer untuk mencipta projek, masukkan direktori projek dan laksanakan php bin/console serve;

Terdapat beberapa versi thinkphp Terdapat beberapa versi thinkphp Apr 09, 2024 pm 06:09 PM

ThinkPHP mempunyai berbilang versi yang direka untuk versi PHP yang berbeza. Versi utama termasuk 3.2, 5.0, 5.1 dan 6.0, manakala versi kecil digunakan untuk membetulkan pepijat dan menyediakan ciri baharu. Versi stabil terkini ialah ThinkPHP 6.0.16. Apabila memilih versi, pertimbangkan versi PHP, keperluan ciri dan sokongan komuniti. Adalah disyorkan untuk menggunakan versi stabil terkini untuk prestasi dan sokongan terbaik.

Bagaimana untuk menjalankan thinkphp Bagaimana untuk menjalankan thinkphp Apr 09, 2024 pm 05:39 PM

Langkah-langkah untuk menjalankan ThinkPHP Framework secara setempat: Muat turun dan nyahzip ThinkPHP Framework ke direktori tempatan. Buat hos maya (pilihan) yang menunjuk ke direktori akar ThinkPHP. Konfigurasikan parameter sambungan pangkalan data. Mulakan pelayan web. Mulakan aplikasi ThinkPHP. Akses URL aplikasi ThinkPHP dan jalankannya.

Mana yang lebih baik, laravel atau thinkphp? Mana yang lebih baik, laravel atau thinkphp? Apr 09, 2024 pm 03:18 PM

Perbandingan prestasi rangka kerja Laravel dan ThinkPHP: ThinkPHP umumnya berprestasi lebih baik daripada Laravel, memfokuskan pada pengoptimuman dan caching. Laravel berfungsi dengan baik, tetapi untuk aplikasi yang kompleks, ThinkPHP mungkin lebih sesuai.

Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk melaksanakan tugas tak segerak Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk melaksanakan tugas tak segerak Nov 22, 2023 pm 12:01 PM

"Cadangan Pembangunan: Cara Menggunakan Rangka Kerja ThinkPHP untuk Melaksanakan Tugas Asynchronous" Dengan perkembangan pesat teknologi Internet, aplikasi Web mempunyai keperluan yang semakin tinggi untuk mengendalikan sejumlah besar permintaan serentak dan logik perniagaan yang kompleks. Untuk meningkatkan prestasi sistem dan pengalaman pengguna, pembangun sering mempertimbangkan untuk menggunakan tugas tak segerak untuk melaksanakan beberapa operasi yang memakan masa, seperti menghantar e-mel, memproses muat naik fail, menjana laporan, dsb. Dalam bidang PHP, rangka kerja ThinkPHP, sebagai rangka kerja pembangunan yang popular, menyediakan beberapa cara mudah untuk melaksanakan tugas tak segerak.

Cara menolak kad perniagaan rakan di WeChat Cara menolak kad perniagaan rakan di WeChat Mar 30, 2024 pm 07:16 PM

Kad perniagaan ialah kaedah yang boleh digunakan untuk menolak rakan dalam perisian WeChat Sesetengah pengguna tidak tahu cara menolak kad perniagaan rakan dalam WeChat Hanya klik pada halaman peribadi rakan, pilih Lagi untuk mengesyorkannya kepada rakan dan hantar mereka. Artikel ini adalah mengenai WeChat push Pengenalan kaedah kad perniagaan rakan boleh memberitahu anda kandungan tertentu Berikut adalah pengenalan terperinci, lihat! Tutorial penggunaan WeChat: Bagaimana untuk menolak kad perniagaan rakan di WeChat Jawapan: Klik pada halaman peribadi rakan, pilih Lagi untuk mengesyorkannya kepada rakan dan menghantarnya . 2. Klik pilihan [Lagi] di penjuru kanan sebelah atas. 3. Kemudian klik [Syorkan TA kepada rakan]. 4. Pilih rakan yang anda ingin hantar kad perniagaan. 5. Klik [Hantar].

Bagaimana untuk memasang thinkphp Bagaimana untuk memasang thinkphp Apr 09, 2024 pm 05:42 PM

Langkah pemasangan ThinkPHP: Sediakan persekitaran PHP, Komposer dan MySQL. Buat projek menggunakan Komposer. Pasang rangka kerja dan kebergantungan ThinkPHP. Konfigurasikan sambungan pangkalan data. Hasilkan kod aplikasi. Lancarkan aplikasi dan lawati http://localhost:8000.

Bagaimana untuk melaksanakan push dan pemberitahuan mesej dalam aplikasi uniapp Bagaimana untuk melaksanakan push dan pemberitahuan mesej dalam aplikasi uniapp Oct 18, 2023 am 09:19 AM

Uniapp ialah rangka kerja pembangunan merentas platform berdasarkan Vue.js yang boleh digunakan untuk membangunkan aplikasi yang berjalan pada berbilang platform pada masa yang sama. Apabila melaksanakan fungsi tolak dan pemberitahuan mesej, Uniapp menyediakan beberapa pemalam dan API yang sepadan Perkara berikut akan memperkenalkan cara menggunakan pemalam dan API ini untuk melaksanakan fungsi tolak dan pemberitahuan mesej. 1. Tekan mesej Untuk melaksanakan fungsi tolak mesej, kita boleh menggunakan pemalam uni-push yang disediakan oleh Uniapp. Pemalam ini adalah berdasarkan Tencent Cloud Push Service dan boleh menolak mesej pada berbilang platform

See all articles