파이썬 심화 - 메일보내기

JiWOn·2022년 12월 23일
0

🔗수업내용 : 테킷 AI 스쿨 기초다지기

아래 게시글은 멋쟁이 사자처럼 ai school 내용에서 정리해온 내용입니다.
뒤죽박죽~!


파이썬으로 메일보내기

준비

  • MAP 접근 허용으로 변경하기
  • 메일 계정의 외부 접속에 대한 보안 설정 해제

SMTP (Simple Mail Transfer Protocol)

  1. 클라이언트가 메일을 작성
  2. 나의 Email Server로 보냄
  3. 이 때 사용되는 SMTP
  4. 약속에 맞춰서 전자메일 서버에 보냄
  5. 보낼 B Email Server로 보내기 위해서 SMTP로 전송
  6. A Email Server를 클라이언트에게 보내기 위해서 필요한 것 IMAP

SMTP 서버를 이용해서 우리가 원하는 곳으로 메일을 보낼 수 있음

메일 보내기

라이브러리

smtplib : SMTP를 쉽게 사용할 수 있도록 해주는 라이브러리

SMTP 서버와 연결하기

  • smtplib.SMTP(서버주소, 포트번호)
    • 서버에 연결해주는 함수
    • 주소: 123@gmail.com
    • port : 하나의 서버를 이용하지만 다른 문을 열고나가면 다른 게 되고 있을 수도 있음 이때의 문이 port
      • 포트 : 465 ← 지메일에서 사용하려면 포트번호가 이거임
  • gmail은 보안때문에 ssl 처리방법이 포함되어야 함
    • smtplib.SMTP_SSL(서버주소,포트)

로그인하기

smtp.login(메일주소,구글비번) : 구글메일에 로그인됨

MIME

  • 전자우편을 위한 인터넷 표준 포맷
  • 일반적인 text파일로는 서버에 전달이 불가능.
  • MIME 을 통해서 전달하면 서버가 이해함
  • email.message 모듈로 .EmailMessage 기능 사용
    • from email.message import EmailMessage
    • EmailMessage() 함수
      • 이메일 담을 통
    • 내용 ?
      • .set_contnet("") 본문을 넣어주면 됨
  • 제목, 수신자, 발신자 설정
    • MIME 형태에 존재
    message["Subject"] = "이것은 제목입니다."
     message["From"] = "###@gmail.com"
     message["To"] = "###@gmail.com"

메일 전송하기

  • smtp.send_message(MIME)
  • 안의 파라미터가 MIME의 형태여야함

서버와의 연결 끊기

smtp.quit()


파일 전송하기

사진 열기

  • rb : read binary
  • wb : write binary
  • ab : append binary
  • open() 으로 불러옴
  • print(image.read())로 출력함

close() 함수없이 안전하게 닫을 수 있는 방법

with open() as image:
	image_file = image.read()

파일 첨부하기

  • add_attachment()
    • 텍스트가 아닌 다른 포맷의 파일을 첨부할 때 사용
  • 📝 코드보기
message.add_attechment(이미지 파일, maintype ="", subtype="확장자")
  • maintype
    • 이미지, multitype 등등
  • subtype 확장자
    • import igmhdr 이미지 확장자 알려주는 모듈
    • imghdr.what(파일명, 파일을 불러온 변수)

유효성 검사

  • 정규표현식

    • 이메일에만 나타나는 특별한 조건을 확인하고 맞는지 안맞는지 확인해보기

      ^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$

    • ^: 시작

    • $: 끝

    • [a-zA-Z0-9.+_-] : a부터 z까지, A부터 Z까지, 0부터 9까지, .,+,-,_ 가 1회 이상 반복된다

    • @ : @가 붙는다

    • [a-zA-Z0-9] : a부터 z까지, A부터 Z까지, 0부터 9까지가 1회 이상 반복된다

    • \. : 그 뒤에 .이 붙는다

    • [a-zA-Z] : a부터 z까지, A부터 Z까지

    • {2,3} : 최소 2회 최대 3번 반복된다.

  • 유효성 확인하기
    re.match(reg,"이메일")

0개의 댓글