๊ตฌํํ๊ณ ์ ํ๋ ๊ธฐ๋ฅ์ ์ด์ ๋ ์ง์ ๋ฐ์๋ ๋ฒ์์ ์์นจ 9์์ ์ฌ์ฉ์์๊ฒ ์ด๋ฉ์ผ๋ก ์ ์กํ๋ ์๋น์ค์ด๋ค.
์๋ฆผ ์๋น์ค์ ๋์ ๋ฐฉ์์ ์์ง ์๊ฐํด๋ด์ผํ๊ณ ๋์๋ฅผ ๋ฐ์๋ค๋ฉด ์ฌ์ฉ์๋ฅผ ๊ด๋ฆฌํ๋ DB์ธ users
์ receive_mail
ํ๋๋ฅผ True
๋ก ํ๋ ๋จ์ํ ๋ฐฉ์์ ์ ํํ๋ค.
๋ฉ์ผ์ ์ก์ ์ด์ ์ ํ
์คํธํด๋ดค๋ Flask-Mail
๋ชจ๋์ ์ฌ์ฉํ๊ณ ์ค์ผ์ฅด๋ฌ๋ฅผ ํตํด ํน์ ์๊ฐ์ ๋์ํ๋๋ก ํ ์์ ์ด๋ค.
โ๏ธ ์ด์ ๋ ์ง๋ก ๋ฐ์๋ ๋ฒ์์ ๊ฐ์ ธ์ค๊ธฐ
API์์ ๋ฐ์๋ ์ง๋ฅผ PROPOSE_DT
๋ก ๋ด๋ ค์ค๋ค. API๋ก ๋ถํฐ 10๊ฑด์ฉ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ผ๋ฉด์ ์ค๋๋ ์ง์์ ํ๋ฃจ๋ฅผ ๋บ ๋ ์ง๊น์ง์ ๋ฐ์ดํฐ๋ง ๋ฐ์๋ค.
API์์ ๋ ์ง๊ธฐ์ค ์ ๋ ฌ๋ ์ํ๋ก ๋ด๋ ค์ฃผ๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์ ํ ๋ ์ง๋ฒ์์์ ๋ฒ์ด๋ ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ง ๋ฐ์ผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ๋ถํ๊ฐ ํฐ ์์ ์ ์๋ ๊ฒ ๊ฐ๋ค.
๋ ์ง ์ฐ์ฐ์ timedelta
๋ฅผ ์ฌ์ฉํ๋ค.
์ค๋ ๋ ์ง์์ ํ๋ฃจ๋ฅผ ๋บ ๋ ์ง๋ฅผ ๋ฒ์๋ก ์ง์ ํ๋ค.
target_date = str(datetime.now().date() - timedelta(days=1))
ํ์ ์๋ ์กฐ๊ฑด์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๋ค
if propose_date >= target_date:
...
โ๏ธ ์๋ฆผ ์๋น์ค์ ๋์ํ ์ฌ์ฉ์์ ๋ฉ์ผ์ ๊ฐ์ ธ์ค๊ธฐ
users DB์ ๋์์ ๋ํ ํ๋๋ฅผ ๋์ด ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋ค.
def get_allow_mail_list():
allow_users = list(db.users.find({'receive_mail':True},{'_id':0, 'username':1}))
return allow_users
โ๏ธ ๋ฉ์ผ์ ์ก ํ ์คํธ ๋ฉ์๋
@application.route('/mail-test')
def mail_send():
laws = get_laws()
user_mail_list = get_allow_mail_list()
recipients = []
for user_mail in user_mail_list:
print(user_mail)
recipients.append(user_mail['username'])
msg = Message("[Today-Law] ์ด์ ๋ฐ์๋ฒ์ ์๋ฆผ ", sender='zbeld123@gmail.com',recipients=recipients)
html_template = f"<h1>์ด์ ๋ฐ์๋ฒ์ ์๋</h1><div>{laws[0]['title']}</div>"
msg.html = html_template
mail.send(msg)
return "ok"
์~์ ๋ค์ด์จ๋ค.
์ด์ ์ด๋ป๊ฒ ํ๋ฉด ํ ๋์ ๋ค์ด์ค๊ฒ ๋ณด์ฌ์ค ์ ์์ ์ง ๋ฉ์ผ ํ ํ๋ฆฟ์ ๊ณ ๋ฏผํด์ผ ํ๋ค.
+++
Crontab ์ฌ์ฉ๋ฒ
์~๊ธ ๋งค์ผ ์ค์ 9์์ ์ค์ผ์ฅด๋ฌ๋ฅผ ๋์์ํค๊ณ ์ถ๋ค๋ฉด ?!
(0:์ผ์์ผ ~ 6:ํ ์์ผ)
cron = "00 09 * * 1-5"