基於原作做了很少的修改
from email.mime.image import mimeimage
from email.mime.multipart import mimemultipart
from email.mime.text import mimetext
import smtplib
class sendemail:
# 建構函式:初始化基本資訊
def __init__(self, host, user, passwd, account=''):
self._user = user
if len(account) <= 0:
account = user.split("@")[0]
self._account = account
self._me = self._account + "<" + self._user + ">"
# server = smtplib.smtp()
# server.connect(host)
# server.login(self._account, passwd)
# self._server = server
# ssl傳送 比較通用
smtp = smtplib.smtp_ssl(host)
# smtp.set_debuglevel(1)
smtp.ehlo(host)
smtp.login(user, passwd)
self._server = smtp
# 傳送檔案或html郵件
def send_txt(self, to_list, sub, content, subtype='html'):
# 如果傳送的是文字郵件,則_subtype設定為plain
# 如果傳送的是html郵件,則_subtype設定為html
msg = mimetext(content, _subtype=subtype, _charset='utf-8')
msg['subject'] = sub
msg['from'] = self._me
msg['to'] = ";".join(to_list)
try:
self._server.sendmail(self._me, to_list, msg.as_string())
return true
except exception as e:
print(str(e))
return false
# 傳送帶附件的檔案或html郵件
def send_attach(self, to_list, sub, content, subtype='html'):
# 建立乙個帶附件的例項
msg = mimemultipart()
# 增加附件1
att1 = mimetext(open(r'email_send.py', 'rb').read(), 'base64', 'utf-8')
# 這裡的filename可以任意寫,寫什麼名字,郵件中顯示什麼名字
att1["content-disposition"] = 'attachment; filename="email_send.py"'
msg.attach(att1)
# 增加附件2
att2 = mimetext(open(r'pay_wx.py', 'rb').read(), 'base64', 'utf-8')
att2["content-disposition"] = 'attachment; filename="pay_wx.py"'
msg.attach(att2)
# 增加郵件內容
msg.attach(mimetext(content, _subtype=subtype, _charset='utf-8'))
msg['subject'] = sub
msg['from'] = self._me
msg['to'] = ";".join(to_list)
try:
self._server.sendmail(self._me, to_list, msg.as_string())
return true
except exception as e:
print(str(e))
return false
# 傳送帶附件的檔案或html郵件
def send_image(self, to_list, sub, content, subtype='html'):
# 建立乙個帶附件的例項
msg = mimemultipart()
# 增加郵件內容
msg.attach(mimetext(content, _subtype=subtype, _charset='utf-8'))
# 增加附件
image = mimeimage(open(r'wechatimg1228.jpeg', 'rb').read())
# 附件列表中顯示的檔名
image.add_header('content-disposition', 'attachment;filename=wechatimg1228.jpeg')
msg.attach(image)
msg['subject'] = sub
msg['from'] = self._me
msg['to'] = ";".join(to_list)
try:
self._server.sendmail(self._me, to_list, msg.as_string())
return true
except exception as e:
print(str(e))
return false
# 析構函式:釋放資源
def __del__(self):
try:
# self._server.quit()
self._server.close()
except exception as e:
print(str(e))
return false
if __name__ == "__main__":
mailto_list = ['***@qq.com']
# mailto_list = ['***@***.com']
# 163郵箱
# mail = sendemail('smtp.163.com', '***@163.com', '***', '***')
# qq郵箱
# mail = sendemail('smtp.qq.com', '***@qq.com', '***')
mail = sendemail('smtp.exmail.qq.com', 'jhf@***.cn', 'x', '***')
# if mail.send_txt(mailto_list, "測試郵件", "hello world!
你好,傳送文字檔案測試"):
# print("傳送成功")
# else:
# print("傳送失敗")
#print("傳送成功")
else:
print("傳送失敗")
## print("傳送成功")
# else:
# print("傳送失敗")
html傳送郵件 Python傳送郵件(三十)
簡單郵件傳輸協議 smtp 是一種協議,用於在郵件伺服器之間傳送電子郵件和路由電子郵件。python提供smtplib模組,該模組定義了乙個smtp客戶端會話物件,可用於使用smtp或esmtp偵聽器守護程式向任何網際網路機器傳送郵件。這是乙個簡單的語法,用來建立乙個smtp物件,稍後將演示如何用它...
python 傳送郵件
coding utf 8 import smtplib from email.mime.text import mimetext from email.header import header 檔案形式的郵件 def email file mail host smtp.qq.com 郵箱伺服器 ma...
python 傳送郵件
smtp mail transfer protocol 即簡單郵件傳輸協議,它是一組用於由源位址到目的位址傳送郵件的規則,由它來控制信件的中轉方式。python的smtplib提供了一種很方便的途徑傳送電子郵件。它對smtp協議進行了簡單的封裝。直接貼 coding utf 8 import smt...