欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 發(fā)送郵件的示例代碼(Python2/3都可以直接使用)

 更新時間:2020年12月03日 14:58:56   作者:柯廣  
這篇文章主要介紹了python 發(fā)送郵件的示例代碼,并且Python2/3都可以直接使用,感興趣的朋友可以參考下

發(fā)送普通郵件

發(fā)送文本和html普通郵件如下:

from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr

import smtplib

def _format_addr(s):
  name, addr = parseaddr(s)
  return formataddr((Header(name, 'utf-8').encode(), addr))

def get_server(username):
  """
  通過郵箱地址獲得郵箱服務(wù)器
  :param username:用戶名,比如:123456@qq.com
  :return: 郵箱服務(wù)器地址,可以根據(jù)自己實(shí)際業(yè)務(wù)添加,比如:smtp.qq.com
  """
  servers = {'qq' : 'smtp.qq.com'
        , '126' : 'smtp.126.com'
        , '163' : 'smtp.163.com'
        , '139' : 'smtp.139.com'}

  for key,value in servers.items():
    if key in username:
      return value

def send_mail(username, password, to, sender_name, subject, content, email_type):
  """
  :param username: 
  :param password: 
  :param to: 接收者列表 []
  :param sender_name: 
  :param subject: 
  :param content: 
  :param email_type: 
  :return: 
  """
  from_addr = username
  password = password
  to_addr = to
  smtp_server = get_server(username)

  # 郵件正文是MIMEText類型
  msg = MIMEText('%s'%(content), '%s'%(email_type), 'utf-8')
  msg['From'] = _format_addr('%s<%s>' % (sender_name, from_addr))
  msg['To'] = _format_addr('<%s>' % to_addr)
  msg['Subject'] = Header('%s'%(subject), 'utf-8').encode()

  # 普通登陸端口是25,帶ssl驗(yàn)證時候端口是465
  # smtp_server = 'smtp.exmail.qq.com'
  # server = smtplib.SMTP_SSL(smtp_server, 465)
  server = smtplib.SMTP(smtp_server, 25)
  server.set_debuglevel(1)
  server.login(from_addr, password)
  server.sendmail(from_addr, to_addr, msg.as_string())
  server.quit()

if __name__ == '__main__':
  """發(fā)送簡單文本郵件"""
  username = '******@126.com'
  password = '******'
  sender_name = '******@126.com'
  subject = 'test 郵件'
  content = '<html><h1>ikeguang 的來信</h1></html> <a  rel="external nofollow" >ikeguang.com</a></html>'
  # email_type 取值:plain,文本類型郵件;html,html類型郵件
  email_type = 'html'
  _to = ['******@126.com', '******@qq.com']
  for to in _to:
    send_mail(username, password, to, sender_name, subject, content, email_type)
    print('send mail to %s success' % to)

發(fā)送帶附件的郵件

def send_mail_multipart(username, password, to, sender_name, subject, content, email_type):
  from_addr = username
  password = password
  to_addr = to
  smtp_server = get_server(username)

  msg = MIMEMultipart()
  # 郵件正文是MIMEText類型
  msg.attach(MIMEText('%s'%(content), '%s'%(email_type), 'utf-8'))
  msg['From'] = _format_addr('%s<%s>' % (sender_name, from_addr))
  msg['To'] = _format_addr('<%s>' % to_addr)
  msg['Subject'] = Header('%s'%(subject), 'utf-8').encode()

  # 讀取附件
  filename = 'D:/我的文件/Codes/PyCode/source/image/0.jpg'
  with open(filename, 'rb') as f:
    # 設(shè)置附件的MIME和文件名,這里是png類型:
    mime = MIMEBase('image', 'jpg', filename='0.jpg')
    # 加上必要的頭信息:
    mime.add_header('Content-Disposition', 'attachment', filename='0.jpg')
    mime.add_header('Content-ID', '<0>')
    mime.add_header('X-Attachment-Id', '0')
    # 把附件的內(nèi)容讀進(jìn)來:
    mime.set_payload(f.read())
    # 用Base64編碼:
    encoders.encode_base64(mime)
    # 添加到MIMEMultipart:
    msg.attach(mime)

  # 普通登陸端口是25,帶ssl驗(yàn)證時候端口是465
  # smtplib.SMTP_SSL(smtp_server, 465)
  server = smtplib.SMTP(smtp_server, 25)
  server.set_debuglevel(1)
  server.login(from_addr, password)
  server.sendmail(from_addr, [to_addr], msg.as_string())
  server.quit()

相關(guān)文章

  • Python中print()函數(shù)使用實(shí)例詳解

    Python中print()函數(shù)使用實(shí)例詳解

    Python的print()函數(shù)可以打印輸出,常用來將內(nèi)容打印到控制臺,print()是python中最常見的一個函數(shù),本文就通過一些實(shí)例來給大家講講如何使用print()函數(shù),需要的朋友可以參考下
    2023-07-07
  • python中不能連接超時的問題及解決方法

    python中不能連接超時的問題及解決方法

    這篇文章主要介紹了python中不能連接超時的問題及解決方法,需要的朋友可以參考下
    2018-06-06
  • Python數(shù)據(jù)類型轉(zhuǎn)換匯總

    Python數(shù)據(jù)類型轉(zhuǎn)換匯總

    這篇文章主要給大家分享的是Python數(shù)據(jù)類型轉(zhuǎn)換匯總,int,float相互轉(zhuǎn)換、int,string相互轉(zhuǎn)換、float,string相互轉(zhuǎn)換、string,list相互轉(zhuǎn)換等常見內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • Python字符串格式化format()方法運(yùn)用實(shí)例

    Python字符串格式化format()方法運(yùn)用實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python字符串格式化format()方法運(yùn)用實(shí)例的相關(guān)資料,字符串格式化是Python編程中十分常用的部分,它可以幫助我們將更具可讀性的數(shù)據(jù)輸出到控制臺或?qū)懭胛募?需要的朋友可以參考下
    2023-08-08
  • python實(shí)現(xiàn)selenium網(wǎng)絡(luò)爬蟲的方法小結(jié)

    python實(shí)現(xiàn)selenium網(wǎng)絡(luò)爬蟲的方法小結(jié)

    這篇文章主要介紹了python實(shí)現(xiàn)selenium網(wǎng)絡(luò)爬蟲的方法小結(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • wxPython使用系統(tǒng)剪切板的方法

    wxPython使用系統(tǒng)剪切板的方法

    這篇文章主要介紹了wxPython使用系統(tǒng)剪切板的方法,涉及Python使用wx模塊操作系統(tǒng)剪切板的技巧,需要的朋友可以參考下
    2015-06-06
  • Django+vue+vscode前后端分離搭建的實(shí)現(xiàn)

    Django+vue+vscode前后端分離搭建的實(shí)現(xiàn)

    本文以一個非常簡單的demo為例,介紹了利用django+drf+vue的前后端分離開發(fā)模式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-08-08
  • Python 列表推導(dǎo)式需要注意的地方

    Python 列表推導(dǎo)式需要注意的地方

    這篇文章主要介紹了Python 列表推導(dǎo)式需要注意的地方,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-10-10
  • 解決Python requests庫編碼 socks5代理的問題

    解決Python requests庫編碼 socks5代理的問題

    今天小編就為大家分享一篇解決Python requests庫編碼 socks5代理的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python?logging日志模塊的概念與實(shí)踐講解

    Python?logging日志模塊的概念與實(shí)踐講解

    本文通過具體的代碼示例為大家解釋了如何高效地使用logging模塊進(jìn)行日志記錄,以及如何避免常見的陷阱,希望可以幫助大家更好地掌握這個強(qiáng)大的工具
    2023-07-07

最新評論