์ค๋์ Python์ผ๋ก ์ด๋ฉ์ผ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ฆฌ๋ฅผ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
"๊ตณ์ด ์ Python์ผ๋ก ๋ฉ์ผ์ ๋ณด๋ด๋ ๋ฒ์ ์์์ผ ํฉ๋๊น?"๋ผ๊ณ ๋ฌป๋๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ด ์์ต๋๋ค:
1. ๋ง์ ์ฌ๋์๊ฒ ์ฝ๊ฒ ๋ณด๋ผ ์ ์์ต๋๋ค.
1,000๋ช ์ ์ด๋ฉ์ผ์ด ์๋ ์์ ํ์ผ์ด ์์ต๋๋ค. ๋ชจ๋ ์ฌ๋๋ค์๊ฒ ๋ฉ์ผ์ ๋ฐ์กํ๋ ค๋ฉด ์ง๋ฃจํ ๋ฐ๋ณต ์์ ์ ๊ณ์ํด์ผ ํ์ง๋ง, Python์ ์ฌ์ฉํ๋ค๋ฉด 1,000๋ช ์ด๋ 10,000๋ช ์ด๋ ๋ง์ ์ฌ๋๋ค์๊ฒ ๋ฉ์ผ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ค์ ๋ก ์ฐ๋ฆฌ๊ฐ ๋ฐ๋ ์คํธ๋ฉ์ผ์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๋ณด๋ด์ง๋๋ค.
2. ์ค์ผ์ค๋ฌ๋ crontab์ ํ์ฉํ์ฌ ์ ํด์ง ์๊ฐ์ ์ ๊ธฐ์ ์ผ๋ก ๋ฉ์ผ ๋ฐ์ก์ ํ ์ ์์ต๋๋ค.
ํน์ ๋งค์ผ ์์นจ 8์์ ํน์ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ ๋ด์ค๋ ํฐ๋ฅผ ๋ฐ์๋ณด๊ณ ๊ณ์ ๊ฐ์? ํน์ ์๊ฐ์ ์ ๊ธฐ์ ์ผ๋ก ๋ฐ์ก๋๋ ๋ฉ์ผ ๋ํ Python ํน์ ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ๋ณด๋ด๊ณ ์์ต๋๋ค.
3. ๋น์ทํ ์์์ ์ด๋ฉ์ผ์ ์กฐ๊ฑด ๋ณ๋ก ๋ณด๋ผ ์ ์์ต๋๋ค.
์์ด๋ฒ๋ฆฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฐพ๋ ๊ณผ์ ์์ ์์๋น๋ฐ๋ฒํธ๊ฐ ๋ฐ๊ธ๋ ๋ฉ์ผ, ํน์ ํ์๊ฐ์ ์ค์ ๋ณธ์ธ ํ์ธ ์์ฒญ์ ํ๋ ๋ฉ์ผ์ ๋ฐ์ผ์ ์ ์ด ์์ ๊ฒ๋๋ค. ๊ทธ๊ฒ๋ ์๋๋ผ๋ฉด ํฉ๊ฒฉ๊ณผ ๋ถํฉ๊ฒฉ ๋ฉ์ผ์ ๋ฐ์ผ์ ์ ์ ์์ ๊ฒ๋๋ค. ์ด๋ฐ ๋ฉ์ผ๋ค์ ๋ชจ๋ ๋น์ทํ ์์์ ๊ฐ์ง๊ณ ์์ผ๋, ์์ ๋ด๊ธด ๋ด์ฉ์ ์กฐ๊ธ์ฉ ๋ค๋ฆ ๋๋ค. Python์ ํ์ฉํ๋ค๋ฉด ๋น์ทํ ์์์ ์ด๋ฉ์ผ์ ์กฐ๊ฑด ๋ณ๋ก ์ฌ๋๋ค์๊ฒ ๋ฉ์ผ์ ๋ณด๋ผ ์ ์์ต๋๋ค.
๊ทธ๋ผ ์ฐ์ Python์ ์ฌ์ฉํด์ @gmail.com ์ด๋ฉ์ผ์ ๋ณด๋ด๋ ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์ฌ์ ์์
๊ตณ์ด ๋ค๋ฅธ ๋ฉ์ผ ์๋ฒ๋ฅผ ๋๋๊ณ gmail์ ์ฌ์ฉํ ์ด์ ๋ ๋ค๋ฅธ ๋ฉ์ผ๋ง ์๋ฒ์ ๋๋น ๋ฉ์ผ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ด ์ข ๋ณต์กํ๊ธฐ ๋๋ฌธ์
๋๋ค. (๊ทธ๋ฆฌ๊ณ ์ ๋ง์
๋๋ค) gmail๋ก ๋ฉ์ผ ๋ณด๋ด๊ธฐ ์ํด์๋ ๋ช ๊ฐ์ง ์ฌ์ ์์
์ด ํ์ํฉ๋๋ค๋ค.
1. 2๋จ๊ณ ์ธ์ฆ ์ค์ (๋งํฌ > [Google์ ๋ก๊ทธ์ธ] ๋ฉ๋ด ์๋ 2๋จ๊ณ ์ธ์ฆ์ ์ฌ์ฉ์ผ๋ก ๋ณ๊ฒฝ)
2. ์ฑ ๋น๋ฐ๋ฒํธ ์์ฑ (๋งํฌ > [Google์ ๋ก๊ทธ์ธ] ๋ฉ๋ด ์๋ ์ฑ ๋น๋ฐ๋ฒํธ ํด๋ฆญํ์ฌ ์์ฑ)
3. ์์ฑ๋ ์ฑ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ธฐ์ตํด์คฌ๋ค๊ฐ ์๋ Python ์ฝ๋์ ๋ณต๋ถ ํ์๋ฉด ๋ฉ๋๋ค.
์์ค์ฝ๋
์๋ ์ฝ๋๋ฅผ ๋ณต๋ถํ์ ๋ค, ์์์ ์์ฑํ ์ฑ ๋น๋ฐ๋ฒํธ์ ์ฌ๋ฌ๋ถ์ ์ง๋ฉ์ผ ๊ณ์ ID๋ก ๋์ฒด๋ฅผ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
์ ๋ชฉ์ subject ๋ณ์์, ๋ณธ๋ฌธ์ body์ ์์ฑํด ์ฃผ์๋ฉด ๋ฉ๋๋ค!
์ผ๋ฐ Plain Text๋ก ๋ณด๋ด๊ธฐ
import smtplib
from email.mime.text import MIMEText
def send_email(subject, body, ID, PWD, receiver_list):
"""
subject: ๋ฉ์ผ ์ ๋ชฉ
body: ๋ฉ์ผ ๋ณธ๋ฌธ
ID: ๋ณด๋ด๋ ์ฌ๋์ ์ด๋ฉ์ผ ์ฃผ์
PWD: ๋ณด๋ด๋ ์ฌ๋์ ์ด๋ฉ์ผ ๋น๋ฐ๋ฒํธ
receiver_list: ๋ฐ๋ ์ฌ๋๋ค์ ์ด๋ฉ์ผ ์ฃผ์
"""
msg = MIMEText(body)
msg['From'] = ID
msg['To'] = ', '.join(receiver_list)
msg['Subject'] = subject
smtp_server = smtplib.SMTP_SSL('smtp.gmail.com', 465) # 465๋ ํฌํธ๋๋ฒ (์์ ํ์์์)
smtp_server.login(ID, PWD)
smtp_server.sendmail(ID, receiver_list, msg.as_string())
smtp_server.quit()
ID = '๋ณด๋ด๋์ฌ๋@gmail.com' # ๋ฐ์ ์ ์ง๋ฉ์ผ ์ฃผ์
PWD = 'ABCDEFGHIJKLMNOP' # ๋ฐ์ ์ ๋น๋ฐ๋ฒํธ
receiver_list = ['๋ณด๋ด๋์ฌ๋@gmail.com'] # ์์ ์ ๋ฆฌ์คํธ
subject = "์๋ ์ด๋ฉ์ผ ๋ฐ์ก ํ
์คํธ" # ์ด๋ฉ์ผ ์ ๋ชฉ
body = "Python์ผ๋ก ์ด๋ฉ์ผ ๋ณด๋ด๊ธฐ. ์ฑ๊ณต!" # ์ด๋ฉ์ผ ๋ณธ๋ฌธ
send_email(subject, body, ID, PWD, receiver_list)
HTML๋ก ๋ณด๋ด๊ธฐ
def send_email(subject, html_path, ID, PWD, receiver_list):
"""
subject: ๋ฉ์ผ ์ ๋ชฉ
body: ๋ฉ์ผ ๋ณธ๋ฌธ
ID: ๋ณด๋ด๋ ์ฌ๋์ ์ด๋ฉ์ผ ์ฃผ์
PWD: ๋ณด๋ด๋ ์ฌ๋์ ์ด๋ฉ์ผ ๋น๋ฐ๋ฒํธ
receiver_list: ๋ฐ๋ ์ฌ๋๋ค์ ์ด๋ฉ์ผ ์ฃผ์
"""
html = open(html_path, 'r', encoding='utf-8')
msg = MIMEMultipart("related")
msg['From'] = ID
msg['To'] = ', '.join(receiver_list)
msg['Subject'] = subject
msg.attach(MIMEText(html.read(), "html"))
smtp_server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
smtp_server.login(ID, PWD)
smtp_server.sendmail(ID, receiver_list, msg.as_string())
smtp_server.quit()
ID = '๋ณด๋ด๋์ฌ๋@gmail.com'
PWD = 'ABCDEFGHIJKLMNOP'
receiver_list = ['๋ณด๋ด๋์ฌ๋@gmail.com']
subject = "Happy Birthday!!"
html_path = './Cake.html'
์คํ๊ฒฐ๊ณผ
์์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ด ๋ฉ์ผ์ด ๋ฐ์ก์ด ๋ฉ๋๋ค.
์ผ๋ฐ Plain Text
์ฐธ ์ฝ์ฅฌ?
HTML
์ด๋ฏธ์ง๊ฐ ๋๋ฌด ์ปค์ ์๋ ธ์ต๋๋ค... ์๋ฌดํผ html ํ์์ผ๋ก๋ ์ด๋ฉ์ผ์ ๋ณด๋ผ ์ ์๋ค๋ ์ !
+ ์ถ๊ฐ
jinja2๋ฅผ ํ์ฉํ html template์ ๋ง๋ ๋ค๋ฉด ํ์ฉํ๋ค๋ฉด ๋ณด๋ด๋ ์ฌ๋๋ง๋ค ์กฐ๊ธ์ฉ ๋ค๋ฅธ ๋ง์ถคํ ์ด๋ฉ์ผ์ ๋ณด๋ผ ์๋ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ email ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ค๋ฅธ ํจ์๋ ๋ฉ์๋๋ฅผ ํ์ฉํ๋ค๋ฉด ์ฒจ๋ถํ์ผ์ ๋ณด๋ธ๋ค๋์ง, ์ด๋ฏธ์ง๊ฐ ๋ค์ด๊ฐ ๋ฉ์ผ์ ๋ณด๋ด๋ ๋ฑ ๋ค์ํ ์์ ์ ํ ์ ์์ต๋๋ค. ์ดํ ํฌ์คํ ์์๋ ๋ ๋ง์ ๋ด์ฉ์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ค๋์ ์ฌ๊ธฐ๊น์ง! ๐
(์ฝ๋ ๋ฐ ์ ํฌ์คํ ๊ด๋ จ ๋ฌธ์๊ฐ ์์ผ์๋ฉด ์๋ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์!)
'๐ป ITยท๊ธฐ์ ยทํต๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์นํฌ๋กค๋ง 2ํ] selenium webdriver๋ฅผ ํ์ฉํ ์ํ ๋ฆฌ์คํธ ํฌ๋กค๋ง (0) | 2023.01.29 |
---|---|
๋ฉํฐํ๋ก์ธ์ฑ (Multiprocessing) w/ Python (0) | 2023.01.26 |
[API] DALLยทE 2 Python์ผ๋ก ์ฌ์ฉํด๋ณด๊ธฐ (3) | 2023.01.25 |
[์นํฌ๋กค๋ง 1ํ] requests์ bs4๋ฅผ ํ์ฉํ ๋ ์ํผ ๋ชฉ๋ก ํฌ๋กค๋ง (2) | 2023.01.19 |
[API] ChatGPT Python์ผ๋ก ์ฌ์ฉํด๋ณด๊ธฐ - Part.1 (์์ ) (8) | 2023.01.17 |
๋๊ธ