04 블랙보드 신규 글 알림 기능 제공하기: SMTP 메일링 기능 추가

게시글 링크


SMTP 모듈 사용하기

  • 이번에는 앞서 만든 프로그램에 메일 보내기 기능을 추가해보겠습니다.
  • 메일은 몇가지 라이브러리를 활용해 보내도록 만들 수 있고, 우리는 여기서 간단한 SMTP 라이브러리를 활용하여 진행해보겠습니다.
  • SMTP는 네트워크 수업 때 배우는 프로토콜의 종류 중 하나인데, 메일 송수신에 관한 규약을 정리한 것입니다.
  • 우리는 이 프로토콜을 Python에 맞게 제작한 기본 내장 라이브러리 smtplib를 활용할 예정입니다.
  • 코드는 다음과 같아요.

…/BlackBoard-Tutorial/crawl-smtp.py

1
2
3
4
5
6
7
8
import smtplib
from email.mime.text import MIMEText

# Init Mail Service
smtp = smtplib.SMTP('smtp.gmail.com', 587)
smtp.ehlo()
smtp.starttls()
smtp.login('GMAIL_ID', 'GMAIL_PW')
  • 위 코드를 통해 메일을 보내기 위한 세팅이 완료되었습니다.

새로운 글에 대한 메일 보내기 코드 작성

  • 이제는 새로운 글을 찾을 때마다 메일을 보내면 됩니다!

…/BlackBoard-Tutorial/crawl-smtp.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 공지 가져오기
announce_raw = driver.page_source
soup = bs(announce_raw, 'html.parser')
announcements = soup.select('li.clearfix')[10:]
announcements.reverse()
for ann in announcements:
if ann.attrs['id'] not in announce_db:
sql_ann = 'insert into announcement values(\"' + ann.attrs['id'] + '\")'
curs.execute(sql_ann)
conn.commit()
msg = MIMEText(ann.text)
msg['Subject'] = 'Announcement for ' + i[0].split('&course_id=')[1]
msg['To'] = get_target_mail()
smtp.sendmail(get_gmail_id(), get_target_mail(), msg.as_string())
smtp.quit()
  • Homework도 마찬가지로 해주세요!
  • 전체 코드는 crawl-smtp.py 에서 확인하실 수 있어요!

마치며

  • 와 드디어 메일까지 보내주네요!
  • 거의 모든 기능이 완료되었습니다:)
  • 마지막으로 해볼건 Scheduling Code 작성입니다.
  • 정기적으로 몇시간에 한번씩 코드가 돌아가도록 코드를 작성해볼게요:)

04 블랙보드 신규 글 알림 기능 제공하기: SMTP 메일링 기능 추가

https://taebbong.github.io/2019/02/12/2019-02-12-blackboard04-post/

Author

TaeBbong Kwon

Posted on

2019-02-12

Updated on

2022-08-06

Licensed under

Comments