python腳本實現定時發送郵件
知識
06-10
[python] view plain copy
- # -*-encoding: utf-8 -*-
- """
- @version: 3.6
- @time: 2018/6/9 10:16
- @author: SunnyYang
- """
import
os,sysimport
datetime
import
smtplibimport
tracebackfrom
email.headerimport
Header
from
email.utilsimport
parseaddr,formataddrfrom
email.mime.textimport
MIMETextfrom
email.mime.multipart
import
MIMEMultipartfrom
email.mime.baseimport
MIMEBasefrom
emailimport
encoders
- # 對名字前面的中文進行處理
def
_format_addr(s):- name,addr = parseaddr(s)
print
(name) #Python愛好者iiprint
(addr) #Wangxyid@163.comreturn
formataddr((Header(name,"utf-8").encode(),addr))
def
send_email(to_str_in,file_path):- #配置郵件的發送和接受人
- from_str = "Wan***@163.com" #發送郵件人的郵箱地址
- password = "******" #郵箱的客戶端授權碼,不是郵箱的登錄密碼
- smtp_server = "smtp.163.com" #163郵箱的伺服器地址
- to_addr = to_str_in #郵件的接收人
- to_addr = to_addr.split(",") #多個郵件接收人用逗號分隔
- #郵件發送人和接受人信息
- msg = MIMEMultipart()
- msg["From"] = _format_addr("張雪<%s>" % from_str)
- msg["To"] = ",".join(to_addr)
- msg["Subject"] = Header("hi,zhangxue","utf-8").encode()
- #郵件的內容和附件添加
- filepath = file_path
- r = os.path.exists(filepath)
if
ris
False:- msg.attach(MIMEText("No file","plain","utf-8"))
else
:- msg.attach(MIMEText("send with file","plain","utf-8"))
- pathdir = os.listdir(filepath)
for
alldirin
pathdir:- child = os.path.join(filepath,alldir)
print
(alldir)print
(child) #F:automailtest est.txt- # if os.path.splitext(child)[1] == ".txt":
- # print(child.decode("gbk")) #解決中文顯示亂碼的問題
- #添加附件,就是加一個MIMEBase
- # mime = MIMEBase("file","txt",filename="shujutuwen")
- mime = MIMEBase("application", "octet-stream")
[python] view plain copy
- #這三行是必須要加上的,否則附件的名字就會以.bin的形式存在,而不是原來文件的名字
- mime.add_header("Content-Disposition", "attachment", filename=alldir) #alldir是附件的名字
- mime.add_header("Content-ID", "<0>")
- mime.add_header("X-Attachment-Id", "0")
[python] view plain copy
- mime.set_payload(open(child,"rb").read()) #讀取附件內容
- encoders.encode_base64(mime) #編碼方式
- msg.attach(mime)
- current_time = datetime.datetime.now().weekday()+1 #周一是0,周五是4
if
current_time == 5: #設置如果是周五的話就發送郵件try
:- server = smtplib.SMTP(smtp_server, 25)
- server.set_debuglevel(1) # 用於顯示郵件發送的執行步驟
- server.login(from_str, password)
- server.sendmail(from_str, to_addr, msg.as_string())
- server.quit()
except
Exception as e:print
("send failed")print
(traceback.format_exc())if
__name__ == "__main__":- send_email("241921448@qq.com,256889633@qq.com", "F:\automailtest")
[python] view plain copy
- <span stylex="font-size:12px;"> #參考 </span><span stylex="font-size:12px;">https://www.cnblogs.com/changbo/p/5372932.html</span>
※XPath 編程
※ASP.NET Web Forms 編程HTML 表單
TAG:程序員小新人學習 |