像python這種庫豐富又不需要接觸到底層的語言,用來做定時郵件的功能再適合不過。
**如下,目的是為了每天上班下班(9點check in, 19點check out)傳送一封郵件,且郵件標題帶日期。
郵件目前是整點傳送,且沒有排除週末,若想改得更隨機一點,可以增加sleep的間隔,或者用分鐘來判斷。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import smtplib
from email.mime.text import mimetext
from email.utils import formataddr
import time, os
import pytz
import datetime
import logging
my_sender=
'******xx'
# 發件人郵箱賬號
mail_sender=
'******xx@*********.com'
my_pass =
'******xx'
# 發件人郵箱密碼
cc_user=
'******xx@*********.com'
test_receiver=
'*********x@******xx.com'
gmail_user=
'******[email protected]'
# 加入bcc的好處是可以自己確認是否傳送成功,以及郵件的格式
defmail
(status)
: ret=
true
try:
msg=mimetext(
'check '
+status+
' for work. thanks!'
,'plain'
,'utf-8'
) msg[
'from'
]=formataddr(
["***xx"
,mail_sender]
)# 括號裡的對應發件人郵箱暱稱、發件人郵箱賬號
msg[
'to'
]=formataddr(
["***xx"
,test_receiver]
)# 括號裡的對應收件人郵箱暱稱、收件人郵箱賬號
msg[
'cc'
]=formataddr(
["***xx"
,cc_user]
) msg[
'bcc'
]=formataddr(
["***xx"
, gmail_user]
) today=datetime.date.today(
) title =
"*********-******-"
+ datetime.date.today(
).strftime(
'%y%m%d')+
" check "
+status
msg[
'subject'
]=title
server=smtplib.smtp(
"smtp.******xx.com",25
)# 發件人郵箱中的smtp伺服器,埠是25,這裡需要關注自己郵箱的設定,如果是ssl要呼叫定外的介面
server.login(my_sender, my_pass)
# 括號中對應的是發件人郵箱賬號、郵箱密碼
server.sendmail(mail_sender,
[test_receiver,cc_user,gmail_user]
,msg.as_string())
# 括號中對應的是發件人郵箱賬號、收件人郵箱賬號、傳送郵件
server.quit(
)# 關閉連線
except exception:
# 如果 try 中的語句沒有執行,則會執行下面的 ret=false
ret=
false
print
4return ret
defcheck_time()
: in_mail_sent =
false
out_mail_sent =
false
sent_day=datetime.date.today(
) tz=pytz.timezone(
'asia/shanghai'
)# 很多機器的時區是gmt+0, 因此要設定城東八區
while
true
: ts_start = datetime.datetime.now(tz)
print ts_start
print ts_start.hour
if ts_start.hour==
9and
not in_mail_sent:
ret=mail(
"in"
)if ret:
print
("check in郵件傳送成功"
)else
:print
("check in郵件傳送失敗"
) in_mail_sent =
true
elif ts_start.hour==
19and
not out_mail_sent:
ret=mail(
"out"
)if ret:
print
("check out郵件傳送成功"
)else
:print
("check out郵件傳送失敗"
) out_mail_sent =
true
else
:print
("waiting..."
)if datetime.date.today(
)!= sent_day:
print
("reset for new day"
) in_mail_sent =
false
out_mail_sent =
false
sent_day = datetime.date.today(
) time.sleep(
100)
check_time(
)print
("quit!"
)
python實現定時傳送郵件
import schedule import time import smtplib from smtplib import smtp ssl from email.mime.text import mimetext from email.mime.multipart import mimemult...
用Python傳送郵件
伺服器需要週期性的檢查郵件佇列,然後通過smtp伺服器傳送出去,就網上搜了搜,然後修改了加工了一下,寫了乙個郵件傳送的簡單模組 兩個檔案 config.py 配置資訊 send msg.py 傳送郵件 send msg.py coding utf 8 import smtplib,config,em...
用python傳送怎麼傳送郵件?
python高階程式設計中有乙個smtp協議,smtp mail transfer protocol 即簡單郵件傳輸協議,它是一組用於由源位址到目的位址傳送郵件的規則,由它來控制信件的中轉方式。import smtplib smtpobj smtplib.smtp host port local h...