用python實現定時傳送郵件的功能

2021-10-02 22:12:00 字數 3326 閱讀 1828

像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...