>  기사  >  백엔드 개발  >  PHP는 PHPMailer 클래스 라이브러리를 통해 QQ 메일함 전송 방법을 구현합니다.

PHP는 PHPMailer 클래스 라이브러리를 통해 QQ 메일함 전송 방법을 구현합니다.

高洛峰
高洛峰원래의
2016-10-21 10:01:331421검색

사실 PHP 이메일 전송 기능이 모든 프로젝트에서 반드시 사용되는 것은 아니지만, 실제로 모든 전체 프로젝트에는 일반적으로 PHP 이메일 전송 기능이 포함됩니다.


일반적인 이메일 전송 기능은 등록 활성화, 비밀번호 검색, 메시지 회신 등에 일반적으로 사용됩니다. 그리고 이것은 또한 많은 사람들에게 골칫거리이기도 합니다. 결국 이 기능은 몇 줄의 코드로 달성할 수 없고, 시간과 에너지를 들여 작성할 수도 없습니다. 이 함수는 실제로 완성된 제품입니다. 이제 우리에게 필요한 것은 어떻게 사용하는가입니다. 따라서 PHPMailer 클래스 라이브러리를 사용하여 PHP 메일박스 전송 기능을 구현하는 방법을 설명하겠습니다.



먼저 자신의 도메인 이름을 이메일 주소로 사용하여 이메일을 보내는 방법에 대해 알아볼까요?


PHP 환경에서는 이메일을 보내기 위한 mail() 함수가 제공되는데, 이 기능을 사용하려면 sendmail을 지원하는 서버가 필요하거나 릴레이가 필요하지 않은 메일 보내기 서버를 설정해야 합니다. 이제는 인증이 필요하지 않은 이메일 전송 중계를 찾는 것이 거의 불가능하므로 메일 기능을 사용하면 이메일 전송에 실패하는 경우가 많습니다. 그러면 PHP는 이메일을 보낼 수 없습니까? 대답은 '아니오'입니다. POP3/SMTP 프로토콜에 익숙하고 이를 소켓 기능과 결합하면 효율적이고 안정적인 이메일 전송 프로그램을 작성할 수 있지만 이 해결 방법은 POP3를 사용하는 것과 같습니다. POP3/SMTP를 작성하는 /SMTP 일반 개발자에게는 아직 클라이언트가 어렵습니다.


다행히 지금은 인터넷 자원이 풍부하고 이때 PHPMailer가 탄생했습니다.


PHPMailer의 장점은 무엇인가요?

모든 플랫폼에서 실행 가능

SMTP 인증 지원

이메일 보내기 여러 수신자, 참조 주소, 숨은 참조 주소 및 회신 주소를 지정합니다. 참고: 참조 및 숨은 참조 추가는 win 플랫폼의 SMTP 모드에서만 지원됩니다.

8비트, base64, 바이너리 및 인용 인쇄 가능을 포함한 여러 이메일 인코딩 지원

중복 SMTP 서버 지원, 즉 기본 SMTP 서버 주소 또는 백업 SMTP 서버만 지정할 수 있습니다.

첨부 파일이 있는 이메일을 지원하고 이메일 첨부 파일에 어떤 형식이든 추가할 수 있습니다. --물론 서버에는

사용자 정의된 이메일 헤더 정보를 지원할 수 있을 만큼 충분한 대역폭이 있어야 합니다. 이는 PHP의 헤더 기능을 통해 헤더 정보를 보내는 것과 유사합니다.

이메일 본문을 HTML 콘텐츠로 만들기 지원 , 이메일 본문에 그림을 삽입할 수 있습니다.

유연한 디버그 지원

테스트되고 호환되는 SMTP 서버에는 Sendmail, qmail, Postfix, Imail, Exchange 등이 포함됩니다.


PHPMailer 코드 패키지를 다운로드하는 방법은 무엇입니까?

PHPMailer 프로젝트 주소: https://github.com/PHPMailer/PHPMailer git 명령을 사용하여 로컬로 복제하거나 직접 복제할 수 있습니다. 전체 PHPMailer 코드 패키지를 얻으려면 프로젝트 페이지 오른쪽 하단에 있는 "ZIP 다운로드"를 클릭하세요.


qq 메일함 아래의 "도메인 이름 메일함"과 함께 PHPMailer를 사용하여 자신의 도메인 이름을 이메일 주소로 사용하여 이메일을 보내는 방법은 무엇입니까?

 = ===

다음은 자신의 도메인 이름을 사용하여 QQ 사서함 아래 "도메인 이름 사서함"을 무료로 여는 방법과 PHP 환경에서 PHPMailer를 사용하여 자동으로 보내는 방법을 설명하기 위해 두 부분으로 나누어집니다. 새로 열린 "도메인 이름 사서함"으로 이메일을 보내드립니다.

 ====


첫 번째 부분: qq 메일함 아래의 "도메인 이름 메일함"을 엽니다.


'도메인 이름 메일함'을 여는 것은 단지 운영 방법에 대한 이해일 뿐이므로 이 부분은 간략하게만 다루도록 하겠습니다.


QQ 메일함을 입력하고 페이지 왼쪽 상단의 "설정"을 클릭한 다음 "메일함 설정" 아래의 "계정" 탭을 클릭하고 스크롤 막대를 드래그합니다. "도메인 이름 사서함"이 표시되면 "도메인 이름 사서함 관리"를 클릭하여 도메인 이름 사서함을 추가하는 페이지로 들어가거나 http://domain.mail.qq.com/


"도메인 이름 이메일 만들기"를 클릭하고 페이지 안내에 따라 자신의 도메인 이름을 추가하고 확인하세요. 추신: qq 사서함 아래에 "도메인 이름 사서함"을 성공적으로 추가한 경우 qq 사서함을 입력하면 페이지 왼쪽 상단의 "설정" 버튼 뒤에 "도메인 이름 사서함"이라는 텍스트가 표시됩니다. 자신만의 전용 이메일 주소를 도메인네임 메일함에 등록 후, 승인된 "도메인네임 메일함"에서 "회원관리" 클릭 후 "회원추가" 클릭 후, 도메인명 아래 즐겨찾는 메일함명 입력 후 qq 추가 번호 (qq 번호는 새로 추가된 메일함의 사용자 역할을 합니다. qq 번호는 디지털 계정을 닫지 않고 qq 메일함을 열어야 합니다.)


qq 메일함 방금 입력한 qq 번호는 도메인 이름 사서함을 열라는 알림 이메일을 받게 됩니다. "이 이메일 계정 허용"을 클릭하면 PHPMailer를 사용하여 이메일을 보낼 보낸 사람의 이메일 주소가 설정됩니다. "보낸 사람의 이메일 주소".


QQ 계정의 로그인 비밀번호 보안을 보장하기 위해 QQ 계정에 "독립 비밀번호"를 설정한 후 QQ 메일함 "설정"으로 이동하세요. " - "계정" - "계정 보안" 설정을 하고, 여기에 설정된 비밀번호를 이 글에서는 설명의 편의를 위해 "독립 비밀번호"라고 부릅니다.


이제 qq 메일함 아래의 "도메인 이름 메일함"이 열리고 PHPMailer를 사용하여 발신자로 전송될 이메일 주소가 추가됩니다. 다음은 PHPMailer가 나중에 사용해야 하는 몇 가지 주요 정보 목록입니다: QQ 번호, 위의 세 번째 단계에서 추가된 QQ 번호, "독립적인 비밀번호", "발신자의 이메일 주소", 발신자 이름...


2부: PHPMailer를 사용하여 이메일 보내기용 코드 작성


PHPMailer에는 PHP 소켓 확장 지원이 필요하며 PHPMailer는 qq 도메인에 대한 링크가 필요합니다. name 메일함에는 SSL 암호화 방법이 필요합니다. (qq 메일함은 최근 제한을 두었습니다. 새로 열린 도메인 이름 메일함은 더 이상 SMTP 프로토콜의 포트 25의 일반 링크 방법을 통해 연결할 수 없습니다. SSL 포트 465 또는 587만 허용됩니다. [내 도메인 이름 메일함 중 하나는 베타 기간 중입니다.] 현재 열려 있는 도메인 이름 메일함의 포트 25는 여전히 연결될 수 있습니다. 새로 열리는 도메인 이름 메일함 계정의 포트 25를 제한하는 보안 정책일 수 있습니다.]) phpinfo를 확인할 수 있습니다. 다음 두 항목이 있으면 사용할 수 있습니다. openssl 버전 번호 등에 대해 걱정하지 마십시오. 비극에 빠질 수도 있습니다.


여기서 주의할 점은 그 전에 php 환경에서 openssl을 활성화해야 한다는 점입니다.


이 부분 이것은 단지 코드 예제일 뿐입니다. 코드에는 시작점 역할을 하는 몇 가지 주석과 설명이 있습니다.


다운로드한 PHPMailer는 압축이 풀리고 축소되었습니다. class.phpmailer.php, class.pop3.php, class.smtp.php 및 PHPMailerAutoload의 네 가지 파일만 필요합니다. php 에서 언어 폴더는 선택 사항이며 주로 디버깅 중에 정보를 표시하는 데 사용됩니다. class.phpmailer.php의 파일 크기를 살펴보세요. 110kb가 넘는데, 꽤 무섭습니다.

<?php
    //引入PHPMailer的核心文件 使用require_once包含避免出现PHPMailer类重复定义的警告
    require_once("phpmailer/class.phpmailer.php");
 
    //示例化PHPMailer核心类
    $mail = new PHPMailer();
 
    //是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
    $mail->SMTPDebug = 1;
 
    //使用smtp鉴权方式发送邮件,当然你可以选择pop方式 sendmail方式等 本文不做详解
    //可以参考http://phpmailer.github.io/PHPMailer/当中的详细介绍
    $mail->isSMTP();
 
    //smtp需要鉴权 这个必须是true
    $mail->SMTPAuth=true;
 
    //链接qq域名邮箱的服务器地址
    $mail->Host = &#39;smtp.qq.com&#39;;
 
    //设置使用ssl加密方式登录鉴权
    $mail->SMTPSecure = &#39;ssl&#39;;
 
    //设置ssl连接smtp服务器的远程服务器端口号 可选465或587
    $mail->Port = 465;
 
    //设置smtp的helo消息头 这个可有可无 内容任意
    $mail->Helo = &#39;Hello smtp.qq.com Server&#39;;
 
    //设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名
    $mail->Hostname = &#39;jjonline.cn&#39;;
 
    //设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码
    $mail->CharSet = &#39;UTF-8&#39;;
 
    //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名
    $mail->FromName = &#39;晶晶在线&#39;;
 
    //smtp登录的账号 这里填入字符串格式的qq号即可
    $mail->Username =&#39;888888&#39;;
 
    //smtp登录的密码 这里填入“独立密码” 若为设置“独立密码”则填入登录qq的密码 建议设置“独立密码”
    $mail->Password = &#39;xxxxxxx&#39;;
 
    //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”
    $mail->From = &#39;register@jjonline.cn&#39;;
 
    //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
    $mail->isHTML(true);
 
    //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 
    //这里第二个参数的意义不大
    $mail->addAddress(&#39;xxx@qq.com&#39;,&#39;晶晶在线用户&#39;);
 
    //添加多个收件人 则多次调用方法即可
    $mail->addAddress(&#39;xxx@163.com&#39;,&#39;晶晶在线用户&#39;);
 
    //添加该邮件的主题
    $mail->Subject = &#39;PHPMailer发送邮件的示例&#39;;
 
    //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 
    //如:使用file_get_contents函数读取本地的html文件
 
    $mail->Body = "这是一个PHPMailer发送邮件的一个测试用例";
 
    //为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称
    $mail->addAttachment(&#39;./d.jpg&#39;,&#39;mm.jpg&#39;);
 
    //同样该方法可以多次调用 上传多个附件
    $mail->addAttachment(&#39;./Jlib-1.1.0.js&#39;,&#39;Jlib.js&#39;);
 
    //发送命令 返回布尔值
    //PS:经过测试,要是收件人不存在,若不出现错误依然返回true 也就是说在发送之前 自己需要些方法实现检测该邮箱是否真实有效
    $status = $mail->send();
 
    //简单的判断与提示信息
    if($status) {
      echo &#39;发送邮件成功&#39;;
    }else{
      echo &#39;发送邮件失败,错误信息未:&#39;.$mail->ErrorInfo;
    }
?>

특별 알림: 위의 코드 조각은 참조용일 뿐입니다. 웹사이트 시스템에 통합하려는 경우 추가로 호출을 위해 코드 조각을 함수 또는 클래스 라이브러리에 캡슐화할 수 있습니다. PHPMailer는 win32 플랫폼 Cc 또는 블라인드 카피 아래에 추가하는 것을 지원합니다. 내 서버에서 Centos를 사용하기 때문에 테스트하지 않았습니다.

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