dullin
덜린의 코딩 항해 일지
dullin
전체 방문자
오늘
어제
  • 분류 전체보기 (257)
    • JAVA (19)
    • JAVASCRIPT (3)
    • HTML_CSS (3)
    • DB (35)
      • Oracle (16)
      • MySQL (17)
    • JAVA_SERVLET (5)
    • 오류노트 (4)
    • Library & API (6)
    • Spring (20)
      • 개발준비(setting) (1)
      • 전자정부프레임워크 (5)
    • 인공지능 (2)
    • Python (13)
    • OpenCV (1)
    • AI-900 (5)
    • Django (6)
    • Linux (0)
    • Android Studio (12)
    • React Native (1)
    • 프로 크리에이트 (1)
    • 오늘의 일기 (0)
    • PHP (2)
    • Next.js (0)

블로그 메뉴

  • 카테고리
  • 글쓰기
  • 홈

공지사항

인기 글

태그

  • 오갈완
  • Safe Mode
  • 오늘도 오류 한모금
  • 갈증해소완료
  • 오늘도 즐코딩
  • 개발환경 세팅
  • 강철맷집
  • 티스토리챌린지
  • 코딩왕이_되는_그_날까지
  • 선빵필승
  • 덤벼라
  • 라라벨
  • 오블완
  • 덤벼라 스프링
  • 오늘도 에러박살
  • 예끼에러야
  • 코딩
  • 모두_화이팅
  • 필사즉생행생즉사
  • laravel

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dullin

덜린의 코딩 항해 일지

PHPMailer Gmail(구글) smtp 설정하기
PHP

PHPMailer Gmail(구글) smtp 설정하기

2023. 12. 5. 14:43
목적 : 회원가입용 인증메일 보내기
사용환경 : php 그누보드 5
목차
1. gmail > imap 활성화
2. 앱 비밀번호 생성
3. phpmailer 작성
4. 동작테스트

 

 

1. gmail > imap 활성화

- gmail 접속 -> 설정 -> 모든 설정 보기

- 전달 및 POP/IMAP -> IMAP 사용 -> 변경사항 저장

 

2. 앱 비밀번호 생성

메뉴 -> 계정

 

 

보안 -> 2단계 인증

 

 

인증 후 하단으로 스크롤 -> 앱 비밀번호 클릭

 

 

 

 

앱 비밀번호 생성

 

3. phpmailer 작성

(파일다운로드 및 원하는 사용 폴더에 넣어서 사용.)

 

phpmailer 다운로드 후 압축해제 -> plugin 폴더 내에 phpmailer 폴더 삽입 -> config.php 경로 지정

https://github.com/PHPMailer/PHPMailer

 

GitHub - PHPMailer/PHPMailer: The classic email sending library for PHP

The classic email sending library for PHP. Contribute to PHPMailer/PHPMailer development by creating an account on GitHub.

github.com

이후 lib > mailer.lib.php

<?php
if (!defined('_GNUBOARD_')) exit;

include_once(G5_PHPMAILER_PATH.'/PHPMailerAutoload.php');

// 메일 보내기 (파일 여러개 첨부 가능)
// type : text=0, html=1, text+html=2
function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $cc="", $bcc="")
{
    global $config;
    global $g5;

    // 메일발송 사용을 하지 않는다면
    if (!$config['cf_email_use']) return;

    if ($type != 1)
        $content = nl2br($content);

    $result = run_replace('mailer', $fname, $fmail, $to, $subject, $content, $type, $file, $cc, $bcc);
    
    if( is_array($result) && isset($result['return']) ){
        return $result['return'];
    }

    $mail_send_result = false;

    try {
        $mail = new PHPMailer(); // defaults to using php "mail()"
        if (defined('G5_SMTP') && G5_SMTP) {
            $mail->IsSMTP(); // telling the class to use SMTP
			$mail->SMTPSecure = "ssl";
			$mail->SMTPAuth = true;
            $mail->Host = G5_SMTP; // SMTP server
            $mail->Port = G5_SMTP_PORT;
            if(defined('G5_SMTP_PORT') && G5_SMTP_PORT)
                $mail->Port = G5_SMTP_PORT;
        }
		// $mail->SMTPDebug = 2; (디버깅 용)
        $mail->CharSet = 'UTF-8';
		$mail->Username = $fmail; // 관리자 -> 기본설정에서 메일 변경 가능
		$mail->Password = "앱 비밀번호";
        $mail->From = $fmail;
        $mail->FromName = $fname;
        $mail->Subject = $subject;
        $mail->AltBody = ""; // optional, comment out and test
        $mail->msgHTML($content);
        $mail->addAddress($to);
        if ($cc)
            $mail->addCC($cc);
        if ($bcc)
            $mail->addBCC($bcc);
        //print_r2($file); exit;
        if ($file != "") {
            foreach ($file as $f) {
                $mail->addAttachment($f['path'], $f['name']);
            }
        }

        $mail = run_replace('mail_options', $mail, $fname, $fmail, $to, $subject, $content, $type, $file, $cc, $bcc);

        $mail_send_result = $mail->send();

    } catch (Exception $e) {
    }

    run_event('mail_send_result', $mail_send_result, $mail, $to, $cc, $bcc);

    return $mail_send_result;
}

// 파일을 첨부함
function attach_file($filename, $tmp_name)
{
    // 서버에 업로드 되는 파일은 확장자를 주지 않는다. (보안 취약점)
    $dest_file = G5_DATA_PATH.'/tmp/'.str_replace('/', '_', $tmp_name);
    move_uploaded_file($tmp_name, $dest_file);
    $tmpfile = array("name" => $filename, "path" => $dest_file);
    return $tmpfile;
}

 

4. 동작테스트

 

저작자표시 (새창열림)

'PHP' 카테고리의 다른 글

[php] 개발된 API 데이터 받기  (0) 2023.12.15
    'PHP' 카테고리의 다른 글
    • [php] 개발된 API 데이터 받기
    dullin
    dullin

    티스토리툴바