pythonはSMTPメール送信機能を実現します。


フレームにメール送信機能を追加したいと思っていますので、python下のメール送信機能を整理します。
まずpythonはメールの送信をサポートしています。SMtpライブラリを内蔵しています。テキストの送信、HTMLの送信、添付ファイルの添付をサポートしています。その後はメールボックス、163、qq、新浪などのメールボックスがデフォルトでSMTPサービスをオフにします。手動で開いてから送信者メール、許可パスワードを通じて送信者SMTPサービスを通じて送信します。
コードは以下の通りです

#!/usr/bin/env python
# -*- coding: utf_8 -*-

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.multipart import MIMEBase
from email import encoders
from email.header import Header
from email.utils import parseaddr, formataddr
import smtplib


class SendEmail:
 outbox = "[email protected]"
 #      
 password = "wxqcl258258"
 #              
 inbox = "[email protected]"
 #      
 smtp_server = "smtp.163.com"
 #         

 def __init__(self):
 pass

 @classmethod
 def _format_address(cls, text):
 name, address = parseaddr(text)
 return formataddr((Header(name, "utf-8").encode(), address))

 @classmethod
 def send_email_text(cls):
 msg = MIMEText("  smtp      ", "plain", "utf-8")
 #      :    
 #      :        
 #      :  

 msg["From"] = SendEmail._format_address("  163      <%s>" % SendEmail.outbox)
 #            
 msg["To"] = SendEmail._format_address("    <%s>" % SendEmail.inbox)
 #            
 msg["Subject"] = Header("  SMTP   ", "utf-8").encode()
 #     

 try:
 server = smtplib.SMTP(SendEmail.smtp_server, 25)
 #   smtp     
 # server.set_debuglevel(1)
 # debug         
 server.login(SendEmail.outbox, SendEmail.password)
 #   smtp   
 server.sendmail(SendEmail.outbox, [SendEmail.inbox], msg.as_string())
 #     
 server.quit()
 print "      "
 except Exception, e:
 print str(e)
 print "      "
 
if __name__ == '__main__':
 SendEmail.send_email_text()
これはテキストのみの内容で、HTML形式に対応できる内容、修正内容は以下の通りです。
msg=MIMEText(「SMtpメール送信機能をテストする」、「plin」、「utf-8」)
内容をHTML形式に修正し、「playin」を「html」に変更しました。
最後に添付のメールです。
コードは以下の通りです

@classmethod
 def send_email_multipart(cls):
 msg = MIMEMultipart()

 msg["From"] = SendEmail._format_address("  163      <%s>" % SendEmail.outbox)
 #            
 msg["To"] = SendEmail._format_address("    <%s>" % SendEmail.inbox)
 #            
 msg["Subject"] = Header("  SMTP   ", "utf-8").encode()
 #     

 msg.attach(MIMEText("       smtp      ", "plain", "utf-8"))

 with open("E:\\work\\python project\\CreateProject\\20160421140953.xml", "rb") as f:
 #      MIME    
 mime = MIMEBase("xml", "xml", filename="    .xml")
 #         
 mime.add_header('Content-Disposition', 'attachment', filename="    .xml")
 mime.add_header('Content-ID', '<0>')
 mime.add_header('X-Attachment-Id', '0')
 #          :
 mime.set_payload(f.read())
 #  Base64  :
 encoders.encode_base64(mime)
 #    MIMEMultipart:
 msg.attach(mime)

 try:
 server = smtplib.SMTP(SendEmail.smtp_server, 25)
 #   smtp     
 # server.set_debuglevel(1)
 # debug         
 server.login(SendEmail.outbox, SendEmail.password)
 #   smtp   
 server.sendmail(SendEmail.outbox, [SendEmail.inbox], msg.as_string())
 #     
 server.quit()
 print "      "
 except Exception, e:
 print str(e)
 print "      "
以上がpythonメール送信機能の具体的な実現コードです。皆さんの学習に役に立つことを願っています。