import smtplib
from email.mime.text import mimetext #傳送文字檔案
from email.utils import formataddr
# 郵箱位址和口令
sender_addr= '14***[email protected]'
#發件人郵箱
password = '******x'
#這裡的密碼是申請的授權碼
stmp_server ='smtp.qq.com'
#qq郵箱smtp伺服器位址
#收件人位址
receive_addr = '[email protected]'
msg = mimetext('send with file..','plain','utf-8')
msg['from'] = formataddr(['111111',sender_addr])#『111』發件人郵件暱稱
msg['to'] = formataddr(['j111',receive_addr])#收件人郵件暱稱
msg['subject'] = "python"
#郵件title、主題
try:
server = smtplib.smtp_ssl(stmp_server,465) #qq郵箱smtp伺服器ssl埠號465
server.set_debuglevel(1) #就可以列印出和smtp伺服器互動的所有資訊
server.login(sender_addr,password) #登入 server.sendmail(sender_addr,receive_addr,msg.as_string()) #發郵件,msg.as_string()把文字內容轉化為string
print('郵箱鏈結成功')
server.quit()
except smtplib.smtpexception as e: #異常smtpexception
print("郵箱鏈結失敗,鏈結失敗原因,%s"%e)
在第一次中遇到乙個問題,程式執行可是一直沒有發出郵件並結束,smtplib.smtp_ssl(stmp_server,465)
將這裡原來的smtp
修改為smtp_ssl
則成功發出郵件
第二個可以傳送文字內容、鏈結,內容和文字附件的郵件程式,且有多個收件人
import smtplib
from email.mime.text import mimetext #傳送文字檔案
from email.mime.multipart import mimemultipart #附件
from email.mime.image import mimeimage #
from email.utils import formataddr
import os
class
email_example
(object):
def__init__
(self):
# 輸入郵箱位址和口令
self.sender_addr= '***[email protected]'
self.password = '******'
#授權碼
self.stmp_server ='smtp.qq.com'
#qq郵箱smtp伺服器位址
#收件人位址
self.receive_addr = ['14***@qq.com','1***[email protected]']#多個收件人就用list
defset_content
(self):
#建立郵件物件
self.msgroot = mimemultipart('alternative')
#設定基本資訊
self.title = 'python email test'
self.msgroot['from'] = formataddr(['jq',self.sender_addr])
self.msgroot['to'] = formataddr(self.receive_addr)
self.msgroot['subject'] = self.title #郵件title
#設定正文文字內容
mail_text = 'hell0'
self.msgroot.attach(mimetext(mail_text,'plain','utf-8'))
#設定html格式內容,並把嵌入正文文字
# 如果有多個,給它們依次編號,然後引用不同的cid:x即可
mail_html ="""
html內容
"""self.msgroot.attach(mimetext(mail_html,'html','utf-8'))
#設定目錄
file_path =os.path.abspath('.')+r'\1'
img_path =os.path.abspath('.')+r'\1.png'
fp = open(img_path, 'rb')
msgimage = mimeimage(fp.read())
fp.close()
# 定義 id,在 html 文字中引用
msgimage.add_header('content-id', '')#設定id
self.msgroot.attach(msgimage)
#多個附件傳送(檔案)
for f in os.listdir(file_path):
print(f)
path = os.path.join(file_path,f)
msgfile = mimetext(open(path).read())
msgfile["content-disposition"] = 'attachment; filename=' + f
self.msgroot.attach(msgfile)
defmail_send
(self):
try:
server = smtplib.smtp_ssl(self.stmp_server,465) #qq郵箱smtp伺服器ssl埠號465
server.set_debuglevel(1) #就可以列印出和smtp伺服器互動的所有資訊
server.login(self.sender_addr,self.password)
server.sendmail(self.sender_addr,self.receive_addr,self.msgroot.as_string()) #把文字內容轉化為string
print('郵箱鏈結成功')
server.quit()
except smtplib.smtpexception as e: #異常smtpexception
print("郵箱鏈結失敗,鏈結失敗原因,%s"%e)
if __name__ =='__main__':
email = email_example()
email.set_content()
email.mail_send()
終於了解了大概的原理,在自動化框架中接著運 python 郵件傳送學習
author ouyang test time 2021 1 20 15 01 import smtplib from email.header import header from email.mime.text import mimetext def send mail sender,passw...
郵件學習 python傳送郵件分析
首先呼叫python傳送乙個郵件 usr bin python3 import smtplib from email.mime.text import mimetext from email.utils import formataddr my sender 111111111 qq.com 發件人...
學習使用python傳送郵件
使用python傳送郵件 import os import smtplib import mimetypes from email.mimemultipart import mimemultipart from email.mimebase import mimebase from email.mi...