MySQL是一款常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),而Mailgun則是一款強(qiáng)大的電子郵件 API 平臺(tái)。它們結(jié)合起來可以實(shí)現(xiàn)許多有趣的應(yīng)用,比如發(fā)送電子郵件。那么該怎樣在MySQL中使用Mailgun呢?下面我們來介紹一下。
首先,我們需要在Mailgun網(wǎng)站上注冊并獲取API密鑰。然后,在MySQL數(shù)據(jù)庫中創(chuàng)建一個(gè)表,用來存儲(chǔ)需要發(fā)送的電子郵件信息,包括收件人、主題、正文等。
CREATE TABLE emails ( id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, to_email VARCHAR(255) NOT NULL, subject VARCHAR(255) NOT NULL, message TEXT NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP );
其中,id是自增主鍵,to_email、subject和message分別表示收件人、主題和正文,created_at表示創(chuàng)建時(shí)間。
接著,我們需要安裝PHPMailer和Mailgun-PHP這兩個(gè)庫。PHPMailer用于構(gòu)建郵件內(nèi)容,Mailgun-PHP則是與Mailgun通信的工具。
require 'vendor/autoload.php'; require 'vendor/phpmailer/phpmailer/src/PHPMailer.php'; require 'vendor/mailgun/mailgun-php/src/Mailgun/Mailgun.php'; use PHPMailer\PHPMailer\PHPMailer; use Mailgun\Mailgun;
然后,我們可以編寫發(fā)送郵件的函數(shù)了。該函數(shù)讀取數(shù)據(jù)庫中的數(shù)據(jù),構(gòu)建郵件內(nèi)容,使用Mailgun發(fā)送郵件,并更新數(shù)據(jù)庫中的狀態(tài)。
function send_email() { $db_config = array( 'host' =>'localhost', 'user' =>'root', 'password' =>'', 'database' =>'test' ); $mysqli = new mysqli($db_config['host'], $db_config['user'], $db_config['password'], $db_config['database']); if ($mysqli->connect_error) { die('Connect Error (' .$mysqli->connect_errno .') '. $mysqli->connect_error); } $sql = 'SELECT * FROM emails WHERE status=0'; $result = $mysqli->query($sql); while ($row = $result->fetch_assoc()) { $to_email = $row['to_email']; $subject = $row['subject']; $message = $row['message']; $mail = new PHPMailer(); $mail->isHTML(true); $mail->setFrom('no-reply@mail.com', 'No Reply'); $mail->addAddress($to_email); $mail->Subject = $subject; $mail->Body = $message; $mailgun = new Mailgun('MAILGUN_API_KEY'); $mailgun->messages()->send('YOUR_DOMAIN_NAME', [ 'from' =>'No Reply', 'to' =>$to_email, 'subject' =>$mail->Subject, 'html' =>$mail->Body ]); $sql = 'UPDATE emails SET status=1 WHERE id=' . $row['id']; $mysqli->query($sql); } $mysqli->close(); }
上述函數(shù)使用mysqli連接數(shù)據(jù)庫,查詢狀態(tài)為0的郵件條目,然后使用PHPMailer構(gòu)建郵件內(nèi)容,使用Mailgun發(fā)送郵件,最后更新數(shù)據(jù)庫中的狀態(tài)為1,表示已經(jīng)發(fā)送。
最后,我們可以在定時(shí)任務(wù)中調(diào)用該函數(shù),以達(dá)到自動(dòng)發(fā)送電子郵件的目的。