상세 컨텐츠

본문 제목

실습으로 익히는 파이썬 기본문법 pt.5

CODING/Python

by 피그말리온(PYGM) 2022. 5. 27. 20:43

본문

파이썬 기초문법 - 멋사강의

 

SMTP: 간단하게 메일을 보내기위한 약속
이메일을 클라이언트가 서버로 보낼때 SMTP 쓰임
이메일 서버간의 메일전송에도 SMTP 쓰임
반대로 서버에서 클라이언트로 전송시: IMAP
imap설정 허용했다.

 

SMTP 서버도 주소가 있음 이를테면,
Address: smtp.gmail.com
port: 465
smtplib : SMTP 활용을 좀 더 쉽게 해주는 라이브러리

사전작업: 구글G메일에서 설정 변경
구글 계정관리에서 설정 변경

MIME : 전자우편을 보낼때 표준 형태

 

email.message모듈 .EmailMessage 기능을 이용해서
MIME으로 자동 적용 가능

// 이메일에 사진넣기

 

이미지 정보를 컴터가 읽을 수 있게 표기: binary

import smtplib  //내장 라이브러리
from email.message import EmailMessage // MIME 기능
import imghdr  // 이미지 확장자 인식 모듈
import re // 정규표현식 사용가능(reg~~ 줄임말)


// SMTP 접속을 위한 서버, 계정 설정
SMTP_SERVER = "smtp.gmail.com"
// google의 SMTP server 포트 주소는 465(gmail 지정 포트번호)
SMTP_PORT = 465
def sendEmail(addr):
    reg = "^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$"
    if bool(re.match(reg,addr)):
        smtp.send_message(message)
        print("정상적으로 메일이 발송되었습니다.")
    else:
        print("유효한 이메일 주소가 아닙니다.")
message = EmailMessage() // 메시지 모듈 사용
message.set_content("코드라이언 메일링 수업 - 본문입니다.")            // 본문내용 넣기

**// MIME에서 헤더부분에 들어가기 때문에 이렇게 지정!**
message["Subject"] = "코드라이언 메일링 수업입니다."
message["From"] = "###@gmail.com"
message["To"] = "###@gmail.com"

// 내용에 사진넣기 
// open() - codelion.png / rb(read binary) 모듈 사용
// png파일을 rb모드로 읽어서 바이너리 내용을 저장

// image = open("codelion.png","rb") 아래와 동일
// close 없이도 파일 닫을필요 없이 image라고 읽어드림
// 자동으로 닫기게 됨
with open("codelion.png","rb") as image: 
	image_file = image.read()
mime 중 multipart/mixed 타입의 메일
==> add_attachment(...)
==> 필요내용: 1. image, 2. maintype(image or?), 3. subtype(확장자)
subtype가 jpg 등으로 바뀟 수 있으므로
imghdr 모듈을 불러와서 활용
image_type = imghdr.what('파일명',image_file)
message.add_attachment(image_file,maintype='image', subtype='image_type')

// 서버에 연결(보안문제로 SSL 암호화 방식 필수 포함)
smtp = smtplib.SMTP_SSL(SMTP_SERVER,SMTP_PORT)
// 서버에 로그인(별다른 내용표기는 없음) just 기능
smtp.login("###@gmail.com","######")

// 아이디 유효성 확인 후 메시지 보내는 기능
is_valid("###@gmail.com")

// (message) ==> 아까 넣었던 변수
if smtp.send_message(message)=={} :
    print("성공적으로 메일을 보냈습니다.")

smtp.quit()

 

완결판

import smtplib
from email.message import EmailMessage
import imghdr
import re

SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 465

def sendEmail(addr):
    reg = "^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$"
    if bool(re.match(reg,addr)):
        smtp.send_message(message)
        print("정상적으로 메일이 발송되었습니다.")
    else:
        print("유효한 이메일 주소가 아닙니다.")

message = EmailMessage()
message.set_content("코드라이언 수업중입니다.")

message["Subject"] = "이것은 제목입니다."
message["From"] = "###@gmail.com"
message["To"] = "###@gmail.com"

with open("codelion.png","rb") as image:
    image_file = image.read()

image_type = imghdr.what('codelion',image_file)
message.add_attachment(image_file,maintype='image',subtype=image_type)

smtp = smtplib.SMTP_SSL(SMTP_SERVER,SMTP_PORT)
smtp.login("###@gmail.com","######")
// 메일을 보내는 sendEmail 함수를 호출해서 실행해보기
sendEmail("###gmailcom")
smtp.quit()
반응형

관련글 더보기

댓글 영역