>  기사  >  백엔드 개발  >  이 기사에서는 phpmailer를 사용하여 PHP에서 이메일 전송 기능을 구현하는 방법을 보여줍니다.

이 기사에서는 phpmailer를 사용하여 PHP에서 이메일 전송 기능을 구현하는 방법을 보여줍니다.

青灯夜游
青灯夜游앞으로
2022-04-27 20:55:456721검색

PHP를 사용하여 이메일 전송 기능을 구현하는 방법은 무엇입니까? 다음 기사에서는 phpmailer 및 SMTP 서비스를 사용하여 PHP를 사용하여 이메일을 보내는 방법을 소개합니다.

이 기사에서는 phpmailer를 사용하여 PHP에서 이메일 전송 기능을 구현하는 방법을 보여줍니다.

가끔 블로그에 메시지와 댓글이 있을 예정인데, 제 시간에 답글을 달겠습니다. 하지만 저에게 메시지를 남긴 사람이 제 블로그를 다시 확인하지 않으면 답장을 보내지 않을 것입니다. 이것은 매우 중요하지 않습니다.

다른 사람들의 블로그를 보세요. 대부분의 답변은 이메일을 통해 이루어집니다.

이거 꽤 좋은데 하나 사세요.

바이두에서는 기본적으로 두 가지 방법을 소개하고 있습니다.

첫 번째는 PHP가 qq 메일함 또는 NetEase 메일함의 SMTP 서버를 사용하여 이메일을 보내는 것입니다.

두 번째 방법은 phpmailer를 사용하여 이메일을 보내는 것입니다.

두 번째 방법에서도 SMTP 서비스를 활성화하려면 이메일이 필요합니다.

사서함에서 SMTP 서비스를 활성화하는 방법의 최종 효과는 아래 그림과 같습니다.

이 기사에서는 phpmailer를 사용하여 PHP에서 이메일 전송 기능을 구현하는 방법을 보여줍니다.

열기 과정에서 페이지에 다음과 같이 SMTP 호출을 위한 인증 비밀번호를 묻는 메시지가 표시됩니다. 아래 그림과 같습니다. 이 비밀번호를 기억해야 합니다. 기억나지 않으면 다시 생성할 수 있습니다. 위에서 두 개의 SMTP 서비스를 열었고 최종 인증 비밀번호가 우선합니다.

이 기사에서는 phpmailer를 사용하여 PHP에서 이메일 전송 기능을 구현하는 방법을 보여줍니다.

첫 번째 방법을 시도했는데 오류는 다음과 같습니다.

Trying to smtp.qq.com:587 220 smtp.qq.com Esmtp QQ Mail Server Connected to relay host smtp.qq.com > 
HELO localhost 250 smtp.qq.com > AUTH LOGIN ODA1Nzk1OTU1QHFxLmNvbQ== 530 Must issue a STARTTLS command first. 
Error: Remote host returned "530 Must issue a STARTTLS command first." 
Error: Error occurred while sending HELO command. 
Error: Cannot send email to <1150366147@qq.com> Disconnected from remote host

바이두에서 검색했는데 명확한 답변을 찾지 못했습니다. 이러한 문제가 발생한 경우 아래에 메시지를 남겨주시면 논의해 드리겠습니다.

저는 여기서 두 번째 방법을 사용하고 있습니다.

Phpmail의 구체적인 장점과 단점에 대해서는 자세히 설명하지 않겠습니다. 더 알고 싶으시면 바이두에 가보세요.

첫 번째 단계는 phpmailer를 얻는 것입니다

PHPMailer 프로젝트 주소: https://github.com/PHPMailer/PHPMailer; git 명령을 사용하여 로컬로 복제하거나 프로젝트 페이지 오른쪽 하단에 있는 "ZIP 다운로드"를 직접 클릭하여 전체 PHPMailer 코드 패키지를 받으세요. , 그런 다음 로컬에서 압축을 풉니다.

두 번째 단계는 서버 지원을 활성화하는 것입니다

phpmailer를 사용하려면 서버에서 소켓과 openssl 서비스를 활성화해야 합니다.

이 기사에서는 phpmailer를 사용하여 PHP에서 이메일 전송 기능을 구현하는 방법을 보여줍니다.

세 번째 단계는 phpmailer를 서버에 업로드하는 것입니다.

여기서는 thinkphp5 프레임워크를 사용하고 있는데, 루트 디렉터리 아래의 확장 디렉터리에 업로드했습니다.

사실 이 단계를 자세히 설명할 필요는 없습니다. 하지만 github에서 다운로드한 모든 프로젝트 파일이 서버에 몇 가지 기본 파일만 업로드할 수 있는 것은 아닙니다.

네 번째 단계는 메일을 보내는 공개 방법과 호출 방법을 인코딩하는 것입니다.

메일 보내기 공개 방법:

/*发送邮件方法
 *@param $to:接收者 $title:标题 $content:邮件内容
 *@return bool true:发送成功 false:发送失败
 */
function sendMail($to,$title,$content){
 
    //引入PHPMailer的核心文件 使用require_once包含避免出现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 = &#39;smtp.qq.com&#39;;
 
    //设置使用ssl加密方式登录鉴权
    $mail->SMTPSecure = &#39;ssl&#39;;
 
    //设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,但是现在新的好像已经不可用了 可选465或587
    $mail->Port = 465;
 
    //设置smtp的helo消息头 这个可有可无 内容任意
    // $mail->Helo = &#39;Hello smtp.qq.com Server&#39;;
 
    //设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名
    $mail->Hostname = &#39;https://guanchao.site&#39;;
 
    //设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码
    $mail->CharSet = &#39;UTF-8&#39;;
 
    //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名
    $mail->FromName = &#39;LSGO实验室&#39;;
 
    //smtp登录的账号 这里填入字符串格式的qq号即可
    $mail->Username =&#39;805795955@qq.com&#39;;
 
    //smtp登录的密码 使用生成的授权码(就刚才叫你保存的最新的授权码)
    $mail->Password = &#39;****************&#39;;
 
    //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”
    $mail->From = &#39;805795955@qq.com&#39;;
 
    //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
    $mail->isHTML(true);
 
    //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大
    $mail->addAddress($to,&#39;时间里的博客在线通知&#39;);
 
    //添加多个收件人 则多次调用方法即可
    // $mail->addAddress(&#39;**********@qq.com&#39;,&#39;时间里的博客在线通知&#39;);
 
    //添加该邮件的主题
    $mail->Subject = $title;
 
    //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取本地的html文件
    $mail->Body = $content;
 
    //为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称
    // $mail->addAttachment(&#39;./d.jpg&#39;,&#39;mm.jpg&#39;);
    //同样该方法可以多次调用 上传多个附件
    // $mail->addAttachment(&#39;./Jlib-1.1.0.js&#39;,&#39;Jlib.js&#39;);
 
    $status = $mail->send();
 
    //简单的判断与提示信息
    if($status) {
        return true;
    }else{
        return false;
    }
}

전화 방법:

여기서 간단하게 전화를 걸고 있습니다. 어떤 콘텐츠가 필요한지 자신의 필요에 따라.

public function sendEmail()
{
       $flag = sendMail(&#39;805795955@qq.com&#39;,&#39;时间里的博客在线通知&#39;,&#39;欢迎来到时间里的博客&#39;);
       if($flag){
              echo true;
       }else{
              echo false;
       }
}

위는 phpmailer를 사용하여 이메일을 보내는 전체 구현 과정입니다.

원본 주소 : https://juejin.cn/post/7083661334214082574

저자 : camellia

추천 학습 : "PHP Video Tutorial"

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

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제