python傳送郵件

2021-08-19 17:52:39 字數 3725 閱讀 1806

基於原作做了很少的修改

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