Heim  >  Artikel  >  Backend-Entwicklung  >  Implementierung von PHP mit QQ-Postfach zum Versenden von E-Mails

Implementierung von PHP mit QQ-Postfach zum Versenden von E-Mails

不言
不言Original
2018-07-05 15:18:4111633Durchsuche

Dieser Artikel stellt hauptsächlich die Implementierung der Verwendung des QQ-Postfachs zum Senden von E-Mails in PHP vor. Jetzt kann ich ihn mit allen teilen, die ihn benötigen.

In PHP Anwendungsentwicklung In ist es oft notwendig, das Postfach des Benutzers zu überprüfen und Nachrichtenbenachrichtigungen zu senden, und die Verwendung der in PHP integrierten Funktion mail() erfordert die Unterstützung des Mailsystems.

Wenn Sie mit dem IMAP/SMTP-Protokoll vertraut sind, können Sie ein E-Mail-Versandprogramm schreiben, indem Sie die Socket-Funktion kombinieren, aber die Entwicklung eines solchen Programms ist nicht einfach.

Glücklicherweise ist das PHPMailer-Paket leistungsstark genug und kann zum bequemeren Versenden von E-Mails verwendet werden, was uns viel zusätzlichen Ärger erspart.

PHPMailer

PHPMailer ist eine gekapselte PHP-Mail-Versandklasse, die das Senden von E-Mails mit HTML-Inhalt unterstützt und Anhänge zum Senden hinzufügen kann. Sie ähnelt nicht der mail()-Funktion von PHP selbst Es erfordert die Unterstützung der Serverumgebung. Sie müssen lediglich den Mailserver mit relevanten Informationen einrichten, um die E-Mail-Versandfunktion zu realisieren.

PHPMailer-Projektadresse:https://github.com/PHPMailer/PHPMailer

PHP-Erweiterungsunterstützung

PHPMailer erfordert die Sockets-Erweiterungsunterstützung von PHP und die Anmeldung am QQ-Postfach-SMTP-Server muss über SSL verschlüsselt werden, daher muss PHP auch OpenSSL-Unterstützung bieten.

↑ Verwenden Sie die Funktion phpinfo(), um Socket- und OpenSSL-Erweiterungsinformationen anzuzeigen (der Wamp-Server aktiviert diese Erweiterung standardmäßig).

PHPMailer-Kerndateien

↑ In diesem Artikel werden nur class.phpmailer.php und PHPMailer/class.smtp.php benötigt .

QQ-Postfacheinstellungen

Alle gängigen Postfächer unterstützen das SMTP-Protokoll, aber nicht alle Postfächer sind standardmäßig aktiviert. Sie können es manuell in den Postfacheinstellungen aktivieren.

Nach der Bereitstellung des Kontos und des Passworts kann sich der Drittanbieterdienst beim SMTP-Server anmelden und diesen zur Steuerung der E-Mail-Übertragungsmethode verwenden.

SMTP-Dienst aktivieren

↑ Wählen Sie den IMAP-/SMTP-Dienst aus und klicken Sie, um den Dienst zu aktivieren.

Passwort bestätigen

↑ Senden Sie eine SMS mit dem Titel „E-Mail-Client konfigurieren“ an 1069-0700-69.

Autorisierungscode abrufen

↑ SMTP-Server-Authentifizierungskennwort, das ordnungsgemäß aufbewahrt werden muss (PS: Es sind keine Leerzeichen enthalten das Passwort).

PHP sendet E-Mails

Basiscode

Der folgende Code demonstriert die Verwendung von PHPMailer. Achten Sie auf den Konfigurationsprozess der PHPMailer-Instanz.

// 引入PHPMailer的核心文件
require_once("PHPMailer/class.phpmailer.php");
require_once("PHPMailer/class.smtp.php");
// 实例化PHPMailer核心类
$mail = new PHPMailer();
// 是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
$mail->SMTPDebug = 1;
// 使用smtp鉴权方式发送邮件
$mail->isSMTP();
// smtp需要鉴权 这个必须是true
$mail->SMTPAuth = true;
// 链接qq域名邮箱的服务器地址
$mail->Host = 'smtp.qq.com';
// 设置使用ssl加密方式登录鉴权
$mail->SMTPSecure = 'ssl';
// 设置ssl连接smtp服务器的远程服务器端口号
$mail->Port = 465;
// 设置发送的邮件的编码
$mail->CharSet = 'UTF-8';
// 设置发件人昵称 显示在收件人邮件的发件人邮箱地址前的发件人姓名
$mail->FromName = '发件人昵称';
// smtp登录的账号 QQ邮箱即可
$mail->Username = '12345678@qq.com';
// smtp登录的密码 使用生成的授权码
$mail->Password = '**********';
// 设置发件人邮箱地址 同登录账号
$mail->From = '12345678@qq.com';
// 邮件正文是否为html编码 注意此处是一个方法
$mail->isHTML(true);
// 设置收件人邮箱地址
$mail->addAddress('87654321@qq.com');
// 添加多个收件人 则多次调用方法即可
$mail->addAddress('87654321@163.com');
// 添加该邮件的主题
$mail->Subject = '邮件主题';
// 添加邮件正文
$mail->Body = &#39;<h1>Hello World</h1>&#39;;
// 为该邮件添加附件
$mail->addAttachment(&#39;./example.pdf&#39;);
// 发送邮件 返回状态
$status = $mail->send();

Kapselungsmethode

Wenn Sie PHPMailer zum direkten Versenden von E-Mails verwenden möchten, müssen Sie eine umständliche Konfiguration durchführen, die die Effizienz in gewissem Maße verringert.

Um den Aufrufvorgang zu vereinfachen, habe ich darauf basierend eine sekundäre Kapselung erstellt. Sie müssen nur das Konto, das Passwort und den Spitznamen konfigurieren, um Ihre eigene QQMailer-Klasse anzupassen.

<?php
require_once &#39;PHPMailer/class.phpmailer.php&#39;;require_once &#39;PHPMailer/class.smtp.php&#39;;
class QQMailer
{    
    public static $HOST = &#39;smtp.qq.com&#39;; // QQ 邮箱的服务器地址
    public static $PORT = 465; // smtp 服务器的远程服务器端口号
    public static $SMTP = &#39;ssl&#39;; // 使用 ssl 加密方式登录
    public static $CHARSET = &#39;UTF-8&#39;; // 设置发送的邮件的编码

    private static $USERNAME = &#39;123456789@qq.com&#39;; // 授权登录的账号
    private static $PASSWORD = &#39;****************&#39;; // 授权登录的密码
    private static $NICKNAME = &#39;woider&#39;; // 发件人的昵称

    /**
     * QQMailer constructor.
     * @param bool $debug [调试模式]     */
    public function __construct($debug = false)
    {
            $this->mailer = new PHPMailer();        
            $this->mailer->SMTPDebug = $debug ? 1 : 0;        
            $this->mailer->isSMTP(); // 使用 SMTP 方式发送邮件    }    
    /**
     * @return PHPMailer     
     */
    public function getMailer()
    {        return $this->mailer;
    }    private function loadConfig()
    {        /* Server Settings  */
        $this->mailer->SMTPAuth = true; // 开启 SMTP 认证
        $this->mailer->Host = self::$HOST; // SMTP 服务器地址
        $this->mailer->Port = self::$PORT; // 远程服务器端口号
        $this->mailer->SMTPSecure = self::$SMTP; // 登录认证方式
        /* Account Settings */
        $this->mailer->Username = self::$USERNAME; // SMTP 登录账号
        $this->mailer->Password = self::$PASSWORD; // SMTP 登录密码
        $this->mailer->From = self::$USERNAME; // 发件人邮箱地址
        $this->mailer->FromName = self::$NICKNAME; // 发件人昵称(任意内容)
        /* Content Setting  */
        $this->mailer->isHTML(true); // 邮件正文是否为 HTML
        $this->mailer->CharSet = self::$CHARSET; // 发送的邮件的编码    }    /**
     * Add attachment
     * @param $path [附件路径]     */
    public function addFile($path)
    {        $this->mailer->addAttachment($path);
    }    /**
     * Send Email
     * @param $email [收件人]
     * @param $title [主题]
     * @param $content [正文]
     * @return bool [发送状态]     */
    public function send($email, $title, $content)
    {        $this->loadConfig();        $this->mailer->addAddress($email); // 收件人邮箱
        $this->mailer->Subject = $title; // 邮件主题
        $this->mailer->Body = $content; // 邮件信息
        return (bool)$this->mailer->send(); // 发送邮件    }
}

QQMailer.php

require_once 'QQMailer.php';// 实例化 
QQMailer$mailer = new QQMailer(true);// 添加附件
$mailer->addFile('20130VL.jpg');// 邮件标题
$title = '愿得一人心,白首不相离。';// 邮件内容
$content = 41f381271291a4d6375e2131cc9c31c9皑如山上雪,皎若云间月。0c6dc11e160d3b678d68754cc175188a闻君有两意,故来相决绝。0c6dc11e160d3b678d68754cc175188a今日斗酒会,明旦沟水头。0c6dc11e160d3b678d68754cc175188a躞蹀御沟上,沟水东西流。0c6dc11e160d3b678d68754cc175188a凄凄复凄凄,嫁娶不须啼。0c6dc11e160d3b678d68754cc175188a愿得一人心,白首不相离。0c6dc11e160d3b678d68754cc175188a竹竿何袅袅,鱼尾何簁簁!0c6dc11e160d3b678d68754cc175188a男儿重意气,何用钱刀为!94b3e26ee717c64999d7867364b1b4a3EOF;
// 发送QQ邮件
$mailer->send('123456789@qq.com', $title, $content);

Testergebnisse

Das Obige ist der gesamte Inhalt dieses Artikels, Ich hoffe, dass es für alle hilfreich sein wird. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

PHP implementiert den Aufruf der OCR-Texterkennungsschnittstelle von Baidu

PHP-Methode zur Implementierung des arithmetischen Verifizierungscodes

Das obige ist der detaillierte Inhalt vonImplementierung von PHP mit QQ-Postfach zum Versenden von E-Mails. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn