Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python을 사용하여 Gmail 계정에서 첨부 파일이 있는 메일 보내기

<시간/>

이 기사에서는 Python을 사용하여 첨부 파일이 있는 이메일을 보내는 방법을 살펴보겠습니다. 메일을 보내려면 외부 라이브러리가 필요하지 않습니다. Python과 함께 제공되는 SMTPlib라는 모듈이 있습니다. SMTP(Simple Mail Transfer Protocol)를 사용하여 메일을 보냅니다. 메일링을 위한 SMTP 클라이언트 세션 개체를 생성합니다.

SMTP에는 유효한 소스 및 대상 이메일 ID와 포트 번호가 필요합니다. 포트 번호는 사이트마다 다릅니다. 예를 들어 Google의 경우 포트는 587입니다. .

먼저 메일을 보내려면 모듈을 가져와야 합니다.

import smtplib

여기에서도 MIME(Multipurpose Internet Mail Extension) 모듈을 사용하여 보다 유연하게 만듭니다. MIME 헤더를 사용하여 발신자 및 수신자 정보 및 기타 세부 정보를 저장할 수 있습니다. MIME은 메일에 첨부 파일을 설정하는 데도 필요합니다.

Google의 Gmail 서비스를 사용하여 메일을 보내고 있습니다. 따라서 Google의 보안을 위해 몇 가지 설정(필요한 경우)이 필요합니다. 이러한 설정이 되어 있지 않으면 구글이 타사 앱에서의 접근을 지원하지 않을 경우 다음 코드가 동작하지 않을 수 있습니다.

접근을 허용하기 위해서는 구글 계정에서 '덜 안전한 앱 접근' 설정을 해야 합니다. 2단계 인증이 켜져 있으면 보안 수준이 낮은 액세스를 사용할 수 없습니다.

이 설정을 완료하려면 Google의 관리 콘솔로 이동하여 보안 수준이 낮은 앱 설정을 검색하세요.

<중앙> Python을 사용하여 Gmail 계정에서 첨부 파일이 있는 메일 보내기

SMTP(smtplib)를 사용하여 첨부 파일이 있는 메일을 보내는 단계

  • MIME 생성
  • MIME에 발신자, 수신자 주소 추가
  • MIME에 메일 제목 추가
  • 본문을 MIME에 연결
  • 메일에 첨부될 바이너리 모드로 파일 열기
  • 바이트 스트림을 읽고 base64 인코딩 체계를 사용하여 첨부 파일을 인코딩합니다.
  • 첨부파일 헤더 추가
  • 적절한 보안 기능이 있는 유효한 포트 번호로 SMTP 세션을 시작하십시오.
  • 시스템에 로그인합니다.
  • 메일을 보내고 종료

예시 코드

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
mail_content = '''Hello,
This is a test mail.
In this mail we are sending some attachments.
The mail is sent using Python SMTP library.
Thank You
'''
#The mail addresses and password
sender_address = '[email protected]'
sender_pass = 'xxxxxxxx'
receiver_address = '[email protected]'
#Setup the MIME
message = MIMEMultipart()
message['From'] = sender_address
message['To'] = receiver_address
message['Subject'] = 'A test mail sent by Python. It has an attachment.'
#The subject line
#The body and the attachments for the mail
message.attach(MIMEText(mail_content, 'plain'))
attach_file_name = 'TP_python_prev.pdf'
attach_file = open(attach_file_name, 'rb') # Open the file as binary mode
payload = MIMEBase('application', 'octate-stream')
payload.set_payload((attach_file).read())
encoders.encode_base64(payload) #encode the attachment
#add payload header with filename
payload.add_header('Content-Decomposition', 'attachment', filename=attach_file_name)
message.attach(payload)
#Create SMTP session for sending the mail
session = smtplib.SMTP('smtp.gmail.com', 587) #use gmail with port
session.starttls() #enable security
session.login(sender_address, sender_pass) #login with mail_id and password
text = message.as_string()
session.sendmail(sender_address, receiver_address, text)
session.quit()
print('Mail Sent')

출력

D:\Python TP\Python 450\linux>python 327.Send_Mail.py
Mail Sent

<중앙> Python을 사용하여 Gmail 계정에서 첨부 파일이 있는 메일 보내기