程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Python發送email的3種方法

Python發送email的3種方法

編輯:更多關於編程

       這篇文章主要介紹了Python發送email的3種方法,本文講解了使用登錄郵件服務器方法、調用sendmail命令、使用smtp服務來發送三種方法,需要的朋友可以參考下

      python發送email還是比較簡單的,可以通過登錄郵件服務來發送,linux下也可以使用調用sendmail命令來發送,還可以使用本地或者是遠程的smtp服務來發送郵件,不管是單個,群發,還是抄送都比較容易實現。

      先把幾個最簡單的發送郵件方式記錄下,像html郵件,附件等也是支持的,需要時查文檔即可

      1、登錄郵件服務

       代碼如下:

      #!/usr/bin/env python

      # -*- coding: utf-8 -*-

      #python2.7x

      #send_simple_email_by_account.py @2014-07-30

      #author: orangleliu

      '''''

      使用python寫郵件 simple

      使用126 的郵箱服務

      '''

      import smtplib

      from email.mime.text import MIMEText

      SMTPserver = 'smtp.126.com'

      sender = '[email protected]'

      password = "xxxx"

      message = 'I send a message by Python. 你好'

      msg = MIMEText(message)

      msg['Subject'] = 'Test Email by Python'

      msg['From'] = sender

      msg['To'] = destination

      mailserver = smtplib.SMTP(SMTPserver, 25)

      mailserver.login(sender, password)

      mailserver.sendmail(sender, [sender], msg.as_string())

      mailserver.quit()

      print 'send email success'

      2、調用sendmail命令 (linux)

       代碼如下:

      # -*- coding: utf-8 -*-

      #python2.7x

      #send_email_by_.py

      #author: orangleliu

      #date: 2014-08-15

      '''''

      用的是sendmail命令的方式

      這個時候郵件還不定可以發出來,hostname配置可能需要更改

      '''

      from email.mime.text import MIMEText

      from subprocess import Popen, PIPE

      def get_sh_res():

      p = Popen(['/Application/2.0/nirvana/logs/log.sh'], stdout=PIPE)

      return str(p.communicate()[0])

      def mail_send(sender, recevier):

      print "get email info..."

      msg = MIMEText(get_sh_res())

      msg["From"] = sender

      msg["To"] = recevier

      msg["Subject"] = "Yestoday interface log results"

      p = Popen(["/usr/sbin/sendmail", "-t"], stdin=PIPE)

      res = p.communicate(msg.as_string())

      print 'mail sended ...'

      if __name__ == "__main__":

      s = "[email protected]"

      r = "[email protected]"

      mail_send(s, r)

      3、使用smtp服務來發送(本地或者是遠程服務器)

      代碼如下:

      #!/usr/bin/env python

      # -*- coding: utf-8 -*-

      #python2.7x

      #send_email_by_smtp.py

      #author: orangleliu

      #date: 2014-08-15

      '''''

      linux 下使用本地的smtp服務來發送郵件

      前提要開啟smtp服務,檢查的方法

      #ps -ef|grep sendmail

      #telnet localhost 25

      這個時候郵件還不定可以發出來,hostname配置可能需要更改

      '''

      import smtplib

      from email.mime.text import MIMEText

      from subprocess import Popen, PIPE

      def get_sh_res():

      p = Popen(['/Application/2.0/nirvana/logs/log.sh'], stdout=PIPE)

      return str(p.communicate()[0])

      def mail_send(sender, recevier):

      msg = MIMEText(get_sh_res())

      msg["From"] = sender

      msg["To"] = recevier

      msg["Subject"] = "Yestoday interface log results"

      s = smtplib.SMTP('localhost')

      s.sendmail(sender, [recevier], msg.as_string())

      s.quit()

      print 'send mail finished...'

      if __name__ == "__main__":

      s = "[email protected]"

      r = s

      mail_send(s, r)

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved