데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      지메일로 이메일을 발송하는 Python 코딩 방법

      NoOne 22.11.16
      5,088 20 6

      안녕하세요. 업무상 이메일을 주기적으로 발송할 테스트가 필요한 경우를 위해 지메일로 이메일을 발송하는 파이썬 코딩 방법을 알아 보겠습니다.


      지메일(gmail.com)로 이메일을 보내기 위해서는 아래의 순서로 준비가 필요합니다.

      (1) 지메일에서 파이썬 코드로 이메일을 보낼 수 있는 패스워드 설정하고 => 환경설정

      (2) 해당 패스워드를 이용해서 파이썬 코드로 지메일 발송합니다. => 코드 개발

      (3) 추가 팁으로 이메일 본문에 표가 있는 경우 매번 HTML 코드를 작성하기 번거로우므로 템플릿을 만들어두고 내용을 수정하는 방식을 활용합니다. => 이메일 포맷 관리 팁


      환경설정

      구글에서 보안을 강화하면서 로그인에 사용되는 일반 패스워드로는 파이썬 코드 등에서의 원격 접속을 차단하고 있어서 반드시 아래와 같은 코드에서 사용할 패스워드 설정을 하시고 그 패스워드를 사용하셔야만 하는 전제 조건에 해당하는 부분입니다.

      이 페이지는 (1)번의 지메일에서 설정하는 방법을 다루고 있으며, 아래와 같은 화면 캡처 순서대로 진행하시면 어렵지 않게 파이썬 코드에서 사용할 앱 패스워드를 확보하실 수 있습니다.

      1)구글 계정 관리로 이동하고

      2) 보안 메뉴로 이동합니다.



      3) Google에 로그인 영역에서 2단계 인증이 사용이 아닌 경우 해당 라인을 선택해서 추가 인증을 거쳐 사용으로 설정합니다.


      4) 2단계 인증을 사용으로 설정하면서 추가된 위의 4번 앱 비밀번호 라인을 선택해서 파이썬 코드로 사용할 대상인 이름(메일), 기기선택(Mac, Windows 컴퓨터 등 본인 기기/환경) 설정합니다.


      5) 위의 단계 화면 오른쪽 아래에 있는 생성을 누르면 아래와 같은 16자리 비밀번호를 확인 가능하며 다시 볼 수 없으므로 메모를 해 두시면 됩니다.


      6) 위의 생성된 앱 비밀번호 창을 닫으면 아래와 같이 2단계 인증과 앱 비밀번호가 설정 상태로 변경되고 파이썬 코드에서 16자리 비밀번호를 사용해서 지메일에 로그인할 수 있습니다.


      위의 과정으로 파이썬 코드를 이용해서 지메일로 이메일을 발송하기 위한 3단계 중 1단계에 해당하는 환경 설정이 끝났습니다.


      코드 개발

      아래는 파이썬 코드의 설명입니다.

      1. 필요 패키지를 import 합니다.


      2. 이메일 본문에 사용할 파일을 읽는 함수입니다.

        html 본문의 활용도가 높기 때문에 이메일 본문의 내용이 text가 아닌 html 인 것으로 설명합니다.


      3. 이메일 수신자 목록을 파일에서 읽는 함수입니다.

        코드가 완성된 후에 코드 수정을 최소화하기 위해서 변경될 값을 config 로 빼는 개념의 구조입니다.


      4. 이메일 계정정보(아이디, 패스워드)를 소스코드 상에 평문으로 그대로 저장하는 것은 지양해야 하기 때문에 config 파일에 따로 인코딩(base64)해서 저장하고 디코딩한 후 읽기 위한 함수입니다.

        아래 사용자명(username)과 패스워드(userpass)는 실제로 없는 임의의 문자열로 표현한 부분으로 여러분의 Gmail 계정 정보를 입력할 부분입니다.


      5. 수/발신자, 제목 등 기본적인 이메일 값을 설정하는 함수입니다.


      6. 전역변수를 설정합니다. 순서대로

        - 소스가 있는 경로이고

        - 발신자의 계정정보를 base64로 인코딩해서 저장하며

        - 수신자의 이메일을 계정하나당 한 줄에 저장하는 파일이고

        - 이메일 본문의 html 템플릿이고

        - 첨부파일의 html 템플릿입니다. (샘플이라서 동일한 파일로 처리하겠습니다.)

        - 이메일의 제목입니다.


      7. 사용자명(username)과 패스워드(userpass)를 base64 인코딩해서 list_sender.txt 에 저장하는 함수를 실행해서 계정정보를 파일에 습니다. 코드에서 계정정보가 하드 코딩 된 부분을 삭제할 수 있는 근거가 됩니다.

        즉, list_sender.txt 에 정상적으로 한 번 인코딩해서 저장했다면 해당 부분을 소스코드에서 삭제해서 계정정보의 유출을 차단할 수 있습니다.

        다음으로 ist_sender.txt 에서 base64로 디코딩해서 계정 정보를 각각의 변수(username/userpass)에 읽어 들입니다.


      8. 수신자 목록을 읽어서 receivers 변수에 저장합니다.


      9. 이메일을 보낼 수 있는 기본 환경을 세팅하고 본문에 구성할 html 내용을 읽어 옵니다.

        18-py-set_get_message.png

      10. 읽어온 html 내용을 이메일 본문의 html 로 적용해서 이메일 객체에 추가합니다.

        19-py-mimeText.png

      11. 첨부파일이 필요하다면, 아래와 같이 이메일 첨부 형식으로 읽고 base64 인코딩 후 헤더를 추가해서 이메일 객체에 추가합니다.

        20-py-add_attach.png

      12. SMTP 서버에 접속해서 지메일에 로그인을 하고 목록에 있는 모든 수신자에게 이메일을 발송합니다.

        image.png

      13. 템플릿 형태의 표 양식의 이메일이 정상적으로 수신되었습니다.

        image.png

      14. 첨부파일 역시 정상적인 것을 확인할 수 있습니다.

        image.png

      이상으로 파이썬 코드를 이용해서 지메일로 이메일을 발송하기 위한 3단계 중 2단계에 해당하는 파이썬 코딩이 끝났습니다.


      이메일 포맷 관리 팁

      본문으로 사용할 HTML 파일 구조는 <table> 태그만으로 아래와 같이 구성합니다. 이유는 수신자가 웹메일에서 읽을 경우 <html> 태그가 제대로 인식되지 않아서 style 이 제대로 적용되지 않거나 깨지는 경우가 발생하기 때문에 본문의 핵심인 <table> 태그만으로 구성했습니다.

      html 소스는 다음과 같으며 표의 Cell 별로 특정한 문자열로 채워서, 이후 특정 문자열을 원하는 문자열로 바꾸어서 실제로 가변적인 값으로도 채워질 수 있도록 할 수 있습니다.

      image.png


      표의 내용을 바꾸는 파이썬 샘플 함수 코드는 다음과 같습니다.

      str.replace() 메소드 등 단순히 문자열을 변환하는 방법을 사용할 수도 있지만 re.sub() 메소드의 정규식을 이용해서 보다 폭넓고 간략한 방법으로 문자를 변환할 수도 있습니다.

      image.png

      위와 같이 Cell 마다 지정된 특수 키워드를 원하는 값으로 변경하는 함수를 만들고 호출하면 됩니다.

      2단계의 파이썬 코드와 비교하면 위의 함수를 정의하고 아래와 같이 이 함수를 호출합니다.

      image.png


      이메일을 발송한 결과는 아래와 같이 GREEN-TABLE 이 원하는 값으로 잘 채워 진 걸 볼 수 있습니다.

      image.png


      이상으로 지메일을 이용해서 이메일을 보낼 수 있는 파이썬 코딩 설명을 마치겠습니다.

      감사합니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      NoOne 님의 최신 블로그

      더보기
      동영상 기고하기