이 기사에서는 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의 관리 콘솔로 이동하여 보안 수준이 낮은 앱 설정을 검색하세요.
<중앙>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
<중앙>