- 우리가 회원가입을 하거나 회원정보를 수정하거나 할 시 메일로 축하 메일이나 확인메일이 가곤 하는 것을

   경험한 적이 있으실 것 입니다.

 

 

- 그래서 이번에는 서버에서 PHPMailer를 이용하여 구글에 메일을 발송하는 것을 정리해보겠습니다.

 

 

- 저 같은 경우 aws ec2 임대를 해서 서버를 구축해 놓은 상태에서 진행 하였습니다.

 

 

 

 

1. 라이브러리 사용을 위한 설정.

 

- aws 서버에 접속해서 composer.json에 "require::"phpmailer/phpmailer":"~6.0";을 추가합니다.

 

 

- 그 후 composer install 을 해줍니다.

(저 같은 경우 이미 install 되어 noting to install 이 나오네요~)

 

 

-php 설정파일 디렉토리로 가서 php.ini파일을 열고 openssl쪽이 주석처리 되어있으면 주석을 풀어줍니다.

 

 

 

2.SMTP서버 셋팅

 

-간단합니다. 밑에 내용그대로 허용해주시면 됩니다.

 

 

3. Gmail IMAP 허용

 

 

 

 

4. 계정에 대한 엑세스 허용

 

- 계속 SMTP: Couldn't Authenticated라는 오류가 계속 나와서 aws 내의 보안 규칙도 수정해보고 했으나

  오류가 지속되어서 네이버로 설정해서 보냈더니 네이버는 보내지는 겁니다....!

 

 

-알고보니 여기서 엑세스 허용을 해야 지메일로 보내지는게 가능했습니다.

 

 

- 밑의 링크로 접속해 본인계정을 허용해주도록 합시다(사용할 계정)

 

 

-accounts.google.com/DisplayUnlockCaptcha

 

 

 

 

5. phpmailer 사용 및 소스코드 예시

 

- $mail->Username에는 지메일과 $mail->Password에는 지메일의 비밀번호를 입력하시면 됩니다.

 

 

-이렇게 했는데 안되시면 댓글 달아주세요......! 

'Web & App > Php' 카테고리의 다른 글

PDO (PHP Data Object) 란?  (0) 2020.10.13
php - mysql 연동시 한글 깨짐 현상  (0) 2020.08.17

** Pdo사용을 위해선 php 버전이 5.1.0 이상 이어야 합니다**

 

1.PDO(PHP Data Object) 란?

- PHP에서 여러종류의 데이터 베이스에 접근할 수 있게 해주는 PHP 확장 모듈이다.(클래스)

- (MySQL, MS SQL, Oracle......)

-반면, mysql 함수나 mysqli 클래스는 MySQL 서버만을 대상

- 즉, 여러종류의 데이터베이스를 같은 방식으로 사용할 수 있게 해준다.

- Pdo는 Prepared Statement를 제공하여 SQL을 미리 데이터베이스에서 컴파일 해두고

  parameter만 값만 바꿔 처리 함으로써 성능의 향상을 위해 된다. 그리고 SQL injection 방어용

  으로도 사용될 수 있는데, Pdo 역시 Prepared Statement를 제공하므로 SQL injection 방어에 사용될

  수 있습니다. <밑에 예시 코드에서 확인하시면 됩니다.>

 

 

2. 데이터베이스에 연결

- 데이터베이스에 접속하기 위해서 Pdo를 이용해보자.

- 먼저 pdo를 생성하여야 한다.

 

3.쿼리준비

- 데이터베이스와 연결후 

- prepare() 메소드를 사용.

 

4.데이터를 바인딩, 실행

- execute() 메소드의 인수로 쿼리 파라미터에 사용할 값을 넘겨준다.

 

5. 결과값 가져오기

-이는 다른 예시인데 위의 예시는 그냥 insert를 하는 기능을 수행하는 함수 였기 때문이다.

-(1) fetch()

    : 메소드를 한번 실행하면 쿼리결과에서 한행을 가지고 온다

      반복문을 통해 처리하는 경우가 많다.

-(2) fetchAll()

    : 한번에 모든 행을 가지고 올 떄 사용한다.

**fetch의 모드 구성

      -1 FETCH_BOTH

          - 가져오기 모드를 지정해주지 않으면 이 모드가 지정되는데,

             결과 값을 가지고 올떄 칼럼이름을 키로 사용하는 배열과 칼럼의 순서를 키로 사용하는

             배열 두가지 배열을 만들기 때문에 성능이 좋지않다.

      -2 FETCH_ASSOC

          - 칼럼명을 키로 사용하는 연관배열을 반환한다.

          - $row['COLUMN_NAME']와 같은 방식으로 사용한다.

      -3 FETCH_NUM

          - 컬럼의 순서를 키로 사용하는 연관배열을 반환한다.

          - 가져온 데이터는 $row[NUM]과 같은 식으로 사용한다.

       - 이 3가지 외에도 OBJ(객체) 등이 있다....

저 같은 경우

 

php 스톰을 통해서 작업을 진행하고 있는데 mysql 데이터 베이스와 연동 후

 

테이블에 데이터를 넣고 쿼리문을 날려 확인을 해보려 했을 때 한글로 들어간 데이터 들은

 

???로 표시가 뜨더군요....

 

데이터베이스 는 utf8로 설정을 하는 과정을 했었기 때문에 php 의 문제라 생각 하여 찾아보니..

 

생각보다 오래된 게시글이 많더군요 그래서

 

setting 에 들어가서 파일 인코딩 형식 변경도 하고 해보았지만 잘 해결되지 않아 결국 이렇게 해결하였습니다.

 

데이터 베이스와 php 를 연동시키는 부분에서 

 

$pdo = new PDO("mysql:host=$DB_HOST;dbname=$DB_NAME", $DB_USER, $DB_PW);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("set names utf8");

return $pdo;

 

빨간색 줄을 한칸 추가 해주시면 됩니다... ! 

 

전 이렇게 해결 되었습니다 

 

도움되는 부분이 있었으면 좋겠습니다 ~!

'Web & App > Php' 카테고리의 다른 글

PHPMailer를 이용하여 서버에서 메일 보내기  (0) 2020.10.20
PDO (PHP Data Object) 란?  (0) 2020.10.13

+ Recent posts