国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python2.7實現郵件發送功能

2020-02-16 00:06:04
字體:
來源:轉載
供稿:網友

要想實現一個能夠發送帶有文本、圖片、附件的python程序,首先要熟悉兩大模塊:

email以及smtplib

然后對于MIME(郵件擴展)要有一定認知,因為有了擴展才能發送附件以及圖片這些媒體或者非文本信息

最后一個比較細節的方法就是MIMEMultipart,要理解其用法以及對應參數所實現的功能區別

發送郵件三部曲:

創建協議對象
連接郵件服務器
登陸并發送郵件

from email.header import Headerfrom email.mime.base import MIMEBasefrom email.mime.text import MIMETextimport mimetypesfrom email.mime.multipart import MIMEMultipartimport osimport smtplibfrom email import Encoders as email_encodersclass Message(object): def __init__(self, from_addr, to_addr, subject="", html="", text=None, cc_addr=[], attachment=[]):  self.from_addr = from_addr  self.subject = subject  if to_addr:   if isinstance(to_addr, list):    self.to_addr = to_addr   else:    self.to_addr = [d for d in to_addr.split(',')]  else:   self.to_addr = []  if cc_addr:   if isinstance(cc_addr, list):    self.cc_addr = cc_addr   else:    self.cc_addr = [d for d in cc_addr.split(',')]  else:   self.cc_addr = []  if html is not None:   self.body = html   self.body_type = "html"  else:   self.body = text   self.body_type = "plain"  self.parts = []  if isinstance(attachment, list):   for file in attachment:    self.add_attachment(file) def add_attachment(self, file_path, mimetype=None):  """   If *mimetype* is not specified an attempt to guess it is made. If nothing   is guessed then `application/octet-stream` is used.  """  if not mimetype:   mimetype, _ = mimetypes.guess_type(file_path)  if mimetype is None:   mimetype = 'application/octet-stream'  type_maj, type_min = mimetype.split('/')  with open(file_path, 'rb') as fh:   part_data = fh.read()   part = MIMEBase(type_maj, type_min)   part.set_payload(part_data)   email_encoders.encode_base64(part)   part_filename = os.path.basename(file_path)   part.add_header('Content-Disposition', 'attachment; filename="%s"'       % part_filename)   part.add_header('Content-ID', part_filename)   self.parts.append(part) def __to_mime_message(self):  """Returns the message as  :py:class:`email.mime.multipart.MIMEMultipart`."""  ## To get the message work in iOS, you need use multipart/related, not the multipart/alternative  msg = MIMEMultipart('related')  msg['Subject'] = self.subject  msg['From'] = self.from_addr  msg['To'] = ','.join(self.to_addr)  if len(self.cc_addr) > 0:   msg['CC'] = ','.join(self.cc_addr)  body = MIMEText(self.body, self.body_type)  msg.attach(body)  # Add Attachment  for part in self.parts:   msg.attach(part)  return msg def send(self, smtp_server='localhost'):  smtp = smtplib.SMTP()  smtp.connect(smtp_server)  smtp.sendmail(from_addr=self.from_addr, to_addrs=self.to_addr + self.cc_addr, msg=self.__to_mime_message().as_string())  smtp.close()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南康市| 南川市| 拜城县| 昌都县| 拉萨市| 正镶白旗| 辉南县| 岳普湖县| 丹巴县| 林西县| 监利县| 施秉县| 龙里县| 五寨县| 广丰县| 云梦县| 龙海市| 波密县| 安新县| 龙岩市| 湘西| 弥渡县| 博罗县| 绥滨县| 洞口县| 日喀则市| 阳泉市| 常州市| 新蔡县| 陇西县| 天祝| 澎湖县| 商南县| 同心县| 华池县| 临清市| 思茅市| 石柱| 高邑县| 会昌县| 巴里|