>  기사  >  백엔드 개발  >  QQ 사서함을 사용하여 이메일을 보내는 PHP 구현

QQ 사서함을 사용하여 이메일을 보내는 PHP 구현

不言
不言원래의
2018-07-05 15:18:4111632검색

이 기사에서는 주로 QQ 메일함을 사용하여 이메일을 보내는 PHP 구현을 소개합니다. 이제는 모든 사람과 공유합니다. 도움이 필요한 친구들은 이를 참조할 수 있습니다.

PHP 애플리케이션 개발에서는 종종 검증이 필요합니다. 사용자의 이메일 주소. 메시지 알림을 보내려면 PHP에 내장된 mail() 함수를 사용하려면 메일 시스템의 지원이 필요합니다.

IMAP/SMTP 프로토콜에 익숙하고 소켓 기능과 결합하면 이메일 전송 프로그램을 작성할 수 있지만 이러한 프로그램을 개발하는 것은 쉽지 않습니다.

다행히도 PHPMailer 패키지는 충분히 강력하며 이메일을 더 편리하게 보내는 데 사용할 수 있어 추가 문제를 많이 줄여줍니다.

PHPMailer

PHPMailer는 HTML 콘텐츠가 포함된 이메일 전송을 지원하고 전송을 위한 첨부 파일을 추가할 수 있는 캡슐화된 PHP 이메일 전송 클래스입니다. PHP 자체와 달리 mail() 기능에는 이메일만 설정하면 됩니다. 서버는 관련 정보를 포함하는 이메일 전송 기능을 구현할 수 있습니다.

PHPMailer 프로젝트 주소:https://github.com/PHPMailer/PHPMailer

PHP 확장 지원

PHPMailer에는 PHP 소켓 확장 지원이 필요하며 QQ 메일박스에 로그인하려면 SMTP 서버에 로그인해야 합니다. SSL 암호화를 통해 PHP에는 openssl 지원도 포함되어야 합니다.

↑ 소켓 및 openssl 확장 정보를 보려면 phpinfo() 함수를 사용하십시오(wamp 서버는 기본적으로 이 확장을 활성화합니다).

PHPMailer 코어 파일

↑ 이 글에서는 class.phpmailer.php와 PHPMailer/class.smtp.php만 필요합니다.

QQ 사서함 설정

모든 기본 사서함은 SMTP 프로토콜을 지원하지만 모든 사서함이 기본적으로 활성화되어 있는 것은 아닙니다. 사서함 설정에서 수동으로 활성화할 수 있습니다.

계정과 비밀번호를 제공한 후 타사 서비스는 SMTP 서버에 로그인하고 이를 사용하여 메일 전송 방법을 제어할 수 있습니다.

SMTP 서비스 활성화

↑ IMAP/SMTP 서비스를 선택하고 클릭하여 서비스를 활성화합니다.

비밀번호 확인

↑ 1069-0700-69로 "이메일 클라이언트 구성" SMS를 보냅니다.

인증 코드 받기

↑ SMTP 서버 인증 비밀번호, 제대로 보관해야 합니다 (PS: 비밀번호에 공백이 없습니다).

PHP가 이메일을 보냅니다

기본 코드

다음 코드는 PHPMailer 인스턴스의 구성 프로세스에 주의하세요.

// 引入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();

캡슐화 방법

PHPMailer를 사용하여 이메일을 직접 보내려면 번거로운 구성을 수행해야 하므로 효율성이 어느 정도 떨어집니다.

호출 과정을 단순화하기 위해 이를 기반으로 보조 캡슐화를 만들었습니다. 계정, 비밀번호, 닉네임만 구성하면 자신만의 QQMailer 클래스를 맞춤 설정할 수 있습니다.

<?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);

테스트 결과

위 내용은 모두의 학습에 도움이 되기를 바랍니다. 웹사이트!

관련 권장 사항:

php는 Baidu의 OCR 텍스트 인식 인터페이스 호출을 구현합니다

php 메소드를 사용하여 산술 인증 코드를 구현합니다

위 내용은 QQ 사서함을 사용하여 이메일을 보내는 PHP 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.