사실 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 메일함 아래의 "도메인 이름 메일함"이 열리고 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 = 'smtp.qq.com'; //设置使用ssl加密方式登录鉴权 $mail->SMTPSecure = 'ssl'; //设置ssl连接smtp服务器的远程服务器端口号 可选465或587 $mail->Port = 465; //设置smtp的helo消息头 这个可有可无 内容任意 $mail->Helo = 'Hello smtp.qq.com Server'; //设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名 $mail->Hostname = 'jjonline.cn'; //设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码 $mail->CharSet = 'UTF-8'; //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名 $mail->FromName = '晶晶在线'; //smtp登录的账号 这里填入字符串格式的qq号即可 $mail->Username ='888888'; //smtp登录的密码 这里填入“独立密码” 若为设置“独立密码”则填入登录qq的密码 建议设置“独立密码” $mail->Password = 'xxxxxxx'; //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱” $mail->From = 'register@jjonline.cn'; //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false $mail->isHTML(true); //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 //这里第二个参数的意义不大 $mail->addAddress('xxx@qq.com','晶晶在线用户'); //添加多个收件人 则多次调用方法即可 $mail->addAddress('xxx@163.com','晶晶在线用户'); //添加该邮件的主题 $mail->Subject = 'PHPMailer发送邮件的示例'; //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 //如:使用file_get_contents函数读取本地的html文件 $mail->Body = "这是一个PHPMailer发送邮件的一个测试用例"; //为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称 $mail->addAttachment('./d.jpg','mm.jpg'); //同样该方法可以多次调用 上传多个附件 $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js'); //发送命令 返回布尔值 //PS:经过测试,要是收件人不存在,若不出现错误依然返回true 也就是说在发送之前 自己需要些方法实现检测该邮箱是否真实有效 $status = $mail->send(); //简单的判断与提示信息 if($status) { echo '发送邮件成功'; }else{ echo '发送邮件失败,错误信息未:'.$mail->ErrorInfo; } ?>
특별 알림: 위의 코드 조각은 참조용일 뿐입니다. 웹사이트 시스템에 통합하려는 경우 추가로 호출을 위해 코드 조각을 함수 또는 클래스 라이브러리에 캡슐화할 수 있습니다. PHPMailer는 win32 플랫폼 Cc 또는 블라인드 카피 아래에 추가하는 것을 지원합니다. 내 서버에서 Centos를 사용하기 때문에 테스트하지 않았습니다.