當前位置:編程學習大全網 - 源碼下載 - python mimebase需要加載哪個庫

python mimebase需要加載哪個庫

[python] view plain copy print?

import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

from email.mime.base import MIMEBase

from email.header import Header

from email import encoders

class MailSender(object):

_from = None

_attachments = []

def __init__(self, smtpSvr, port):

self.smtp = smtplib.SMTP()

print("connecting...")

self.smtp.connect(smtpSvr, port)

print("connected!!!")

def login(self, user, pwd):

self._from = user

print("login ...")

self.smtp.login(user, pwd)

def add_attachment(self, filename):

'''''

添加附件

'''

att = MIMEBase('application', 'octet-stream')

att.set_payload(open(filename, 'rb').read())

att.add_header('Content-Disposition', 'attachment', filename=('gbk', '', filename) )

encoders.encode_base64(att)

self._attachments.append(att)

def send(self, subject, content, to_addr):

'''''

發送郵件

'''

msg = MIMEMultipart('alternative')

contents = MIMEText(content, "html", _charset='utf-8')

msg['Subject'] = subject

msg['From'] = self._from

msg['To'] = to_addr

for att in self._attachments:

msg.attach(att)

msg.attach(contents)

try:

self.smtp.sendmail(self._from, to_addr, msg.as_string())

return True

except Exception as e:

print(str(e))

return False

def close(self):

self.smtp.quit()

print("logout.")

其實python發郵件的代碼網上到處都是,但是網上幾乎所有的代碼在發送帶有中文名的附件時都會有問題。這裏我壹開始也無法實現,在網上查資料到處都查不到現成的。最後結合網上的資料,加上自己多次實驗,終於搞出來了。

[python] view plain copy print?

att = MIMEBase('application', 'octet-stream')

att.set_payload(open(filename, 'rb').read())

att.add_header('Content-Disposition', 'attachment', filename=('gbk', '', filename) )

encoders.encode_base64(att)

上面代碼中之所以使用gbk,應該是因為windows下文件名是用gbk編碼的吧。

  • 上一篇:情人節創新活動策劃方案
  • 下一篇:學生信息管理系統(C語言版)
  • copyright 2024編程學習大全網