22.04.10 코딩일기 [업무자동화(RPA): 이메일(smtplib)]

업무자동화 RPA(Robotic Process Automation)의 마지막 내용인 e메일 업무자동화에 대해 공부했다.유튜브의 ‘나도 코딩’을 참고하여 공부하고 https://www.youtube.com/watch?v=exgO1LFl9x8&list=PLMsa_0kAjjrd8hYYCwbAuDsXZmHpqHvlV&index=5&t=8305s

gmail을 이용한 메일 업무 자동화에 대해 공부했다.0. 우선 업무 자동화를 통해 지메일을 이용하려면 구글 계정 설정에 보안으로 들어가면 있는 2단계 인증과 앱 비밀번호를 얻어야 한다.그리고 e메일 주소와 앱 비밀번호를 account.py 에 따로 저장해 놓았다.저장해둔 파일은 작업을 할 때마다 읽어들여 사용하게 된다.

EMAIL_ADDRESS = ‘***@gmail.com ‘ #주소 EMAIL_PASSWARD = ‘***’ #앱 비밀번호

smtplib나 email은 기본적으로 있는 라이브러리이기 때문에 따로 설치할 필요가 없다.

– 새로 알게된점-1. 메일보내기 기본

import smtplibfrom account import*with smtplib.SMTP(‘smtp.gmail.com’, 587)assmtp:smtp.ehlo()#접속이 정상적으로 확립되어 있는지 확인 smtp.starttls()#모든 내용이 암호화되도록 설정 smtp.login(EMAIL_ADDRESS, EMAIL_PASSWARD)#로그인 subject=”testmail”#메일 제목 body=메일 본문 msg=f”Subject:{subject}\n<body, 송신자}.sendmail(EMAIL_ADDRESS,’*******@gmail.com’, msg)

상기 방법은 한글 입력이 되지 않기 때문에 한글을 사용하기 위해서는 다른 방법을 사용해야 한다.

import smt plibfrom account import*———from account import*—–from email.message import EmailMessagemsg=’테스트 메일입니다’#제목 msg[‘From’]=EMAIL_ADDRESS#송신자 msg[To.]@”. com]. com’#리스트에 있는 많은 메일을 변경하는 방법to_list=[『****@gmail.com』, 『****@naver.com』]msg[『 To』]=’. join(to_list)#참조 msg[‘Cc’]=’*****@gmail.com’#비밀 참조 msg[BCc]=’*****gmail.com’ms g.set_content(‘테스트 본문입니다.’switishbithmtib.SMTP(‘smtp.gmail.com’, 587)as smtp:smtp.ehlo()smtp.starttls()smtp.login(EMAIL_ADDRESS, EMAIL_PASSWARD)smtp.send_message(msg)

2. 첨부 파일

import smtplib from account import*from email.html import EmailMessagemsg=EmailMessage()msg[‘Subject’]=’테사트니다.’msg[‘]From’]=EMAIL_ADDRESSmsg[‘]To’]=’*****@gmail.com’msg.set_content(*’다`*)——————————-#MIME타입:내려는일이거 있습니다!#msg.add_readment(#png확장자)는 maintest.png’로서 bg=binary로서 읽습니다.’msg.add_contentment(f.read()maintype=’application’, subtype=’pdf’, filename=f.name)#xlsx-open()testxl로 지정합니다. xlsx’,’filename’)는 smtplib를 사용하고f:msg.add_contentment(f.read()maintype=’application’, subtype=’octet-stream’, filename=f.name)입니다.SMTP(‘smtp.gmail.com’, 587)를 SMTP.ehlo(smtp.starttls)smtp.login(EMAIL_ADDRESS, Email_PASSWARD)로 지정합니다.send_msg()

3. 메일 수신 메일 수신에는 imap-tools 라이브러리를 사용해야 합니다.터미널에서 pip install imap-tools로 설치하시면 됩니다.

from imap_tools import MailBox from계정 임포트*mailBox(‘imap.gmail.com’, 993)mailbox.login(EMAIL_ADDRESS, EMAIL_PASSWARD, initial_folder=’에서 우편함을 가져오겠습니다 INBOX’)#limit:대최일수#reverse:true”근일””false””msg in mailbox”의 경우 false”일거”입니다.fetch(limit=1, reverse=True):print(‘, msg.subject)print(‘, msg.from_)print(‘, msg.to)print(‘, msg).Cc)print(‘비밀 참자’, msg.bcc)print(‘짜문’, msg.date)print(‘msg.text’)print(‘)HTML세지메’, msg.html)print(=’*100)#atting을 위한 문자열입니다.요건:print(인쇄)print(인쇄)”, att.content_type(인쇄)”, att.size()#open(*)_”+att.filename,’filename’)를 f:f.write(att.html)print(f”{att.html}{att.html”}(logout)로서 지정합니다4. 메일을 찾습니다.from imap_tools import MailBox from계정임포트*———————————-imap.gmail.com-from’, 993)#mailbox.login(EMAIL_ADDRESS, Email_PASSWARD, initial_folder=’에서 우편함을 가져오겠습니다 INBOX’)#mailbox.logout(‘imap.gmail.com’, 993)을 사용하여 우편함을 로그아웃 합니다.login(EMAIL_ADDRESS, EMAIL_PASSWARD, initial_folder=’)메일 박스로서 INBOX’):#메일 박스 내의 msg의 경우는 “#”을 사용합니다.fetch():우편함 내의 msg의 print(f({msg.from_}]{msg.subject})#명령어를 사용합니다.fetch(‘(UNSEEN)’):우편함 내의 msg의 print(f”[{msg.from_}]{msg.subject})#트정인용하기 메일 박스 내의 msg의 경우.fetch(‘(FROM[]@gmail.com)’):print(f”[{msg.from_}]{msg.subject}”)#어떤글자를 포함하는메일 가져오기(작성, 본문)#작은 따옴표로먼저 감싸고, 실제 TEXT부분은큰 따옴표로감싸줘야함 for msg in mailbox.fetch(‘(TEXT”test mail”)”):print(f”[{msg.from_}]{msg.subject}])#메일 박스 내의 msg을 위한 자글한글(x)함 는에게 보내는답장(목). fetch(‘(SUBJECT”test mail”)”):우편함 내의 msg의 print(f”[{msg.from_}]{msg.subject}])#떤자글한(글목)이미지 있습니다.fetch():msg.subject의 “스트테”의 경우:print(f”[{msg.from_}]{msg.subject})#메일 박스 내의 msg에 대해서는 이 명령을 사용합니다.fetch(‘(SENTISINCE 10-APR-2022)’):우편함의 msg의 print(f”[{msg.from_}]{msg.subject})#정에짜일 날메온”.fetch(‘(ON 10-APR-2022)’):print(f”[{msg.from_}]{msg.subject}])#2박스 내의 msg의 경우는 이 명령을 사용합니다.fetch(‘(ON 10-APR-2022 SUBJECT”test mail””):우편함 내의 msg의 print(f”[{msg.from_}]{msg.subject}])#2지에 상에게보내는 답또(메일 주소는 “테스트 메일”).fetch(‘(또는 10-APR-2022 Subject”test mail”)’):print(f”[{msg.from_}]{msg.subject})여기까지가 이메일 업무 자동화에 대한 내용이었습니다.이번에는 배운 업무 자동화를 이용한 간단한 프로젝트를 해보겠습니다.