본문 바로가기
개발/Python

[py] 메일 자동화 발송 (ft. 셀레니움)

by 코딩하는 갓디노 2022. 10. 2.

[py] 메일 자동화 발송

 

파이썬, 셀레니움을 이용한
네이버 메일 자동화 보내기 입니다.

 

예제는 스타트 코딩, 파이썬 크롤링 강의를 들으면서 공부한 내용입니다.

 

네이버 메일 자동화 보내기 코드

  • 본문인 body 부분이 iframe 태그에 쌓여있기 때문에 iframe 태그 내부에 들어가서 본문을 작성 후 다시 iframe 나가는 별도의 코드가 필요
#셀레니움 기본설정
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager #크롬 드라이버 자동 업데이트
from selenium.webdriver.common.by import By 

#자동입력 방지 문자 알림창 방지 위해 3가지 import
import time
import pyautogui
import pyperclip

chrome_options = Options() #브라우저 꺼짐 방지
chrome_options.add_experimental_option("detach", True)
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"]) #불필요한 에러 메세지 삭제

service = Service(executable_path = ChromeDriverManager().install()) #크롬 드라이버 최신 버전 자동 설치 후 서비스 만들기
driver = webdriver.Chrome(service = service, options = chrome_options)

driver.implicitly_wait(5) #사이트 로딩시간 5초 기다림
driver.maximize_window() #화면 최대화(꽉차게)
driver.get("https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com") #웹페이지 해당 주소 이동

id = driver.find_element(By.CSS_SELECTOR, '#id') #아이디 입력창
id.click()
#id.send_keys('아이디')
pyperclip.copy('아이디')
pyautogui.hotkey('ctrl', 'v')
time.sleep(2)

pw = driver.find_element(By.CSS_SELECTOR, '#pw') #아이디 입력창
pw.click()
#pw.send_keys('비밀번호')
pyperclip.copy('비밀번호')
pyautogui.hotkey('ctrl', 'v')
time.sleep(2)

driver.find_element(By.CSS_SELECTOR, '.btn_login').click()  

#메일함 이동
driver.get("https://mail.naver.com/") #웹페이지 해당 주소 이동
time.sleep(2)

#메일 쓰기 버튼 클릭
write_btn = driver.find_element(By.CSS_SELECTOR, '#nav_snb > div.btn_workset > a.btn_quickwrite._c1\(mfCore\|popupWrite\|new\)._ccr\(lfw\.write\)._stopDefault')
write_btn.click()
time.sleep(2)

#받은 사람
driver.find_element(By.CSS_SELECTOR, '#toInput').send_keys('woorim0ju@naver.com')    
time.sleep(2)

#제목
driver.find_element(By.CSS_SELECTOR, '#subject').send_keys('자동화 메일')    
time.sleep(2)

#iframe 안으로 들어가기
driver.switch_to.frame('se2_iframe') # #se2_iframe 아님 

#본문
driver.find_element(By.CSS_SELECTOR, 'body').send_keys('셀레니움으로 이메일 보내기')    
time.sleep(2)

#iframe 밖으로 나가기
driver.switch_to.default_content()

#보내기 버튼 클릭
driver.find_element(By.CSS_SELECTOR, '#sendBtn').click()

 

구현 화면

 

 

 

반응형

댓글