python實現發送郵件

jopen 10年前發布 | 795 次閱讀 Python

#_encoding:utf-8_

script for python3.2

-------------------------------------------------------------------------------

Name: 發送郵件

Purpose:

#

Author: QiuChangJie

#

Created: 10/09/2012

Copyright: (c) cj.qiu 2012

Licence: <your licence>

-------------------------------------------------------------------------------

import os import smtplib import mimetypes from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.mime.text import MIMEText from email.mime.audio import MIMEAudio from email.mime.image import MIMEImage from email.encoders import encode_base64

MAIL_163_USER = "test@163.com" MAIL_163_PWD = "test" MAIL_YEAH_USER = "test@yeah.com" MAIL_YEAH_PWD = "test" MAIL_GOOGLE_HOST = "smtp.gmail.com" MAIL_163_HOST = "smtp.163.com" MAIL_YEAH_HOST = "smtp.yeah.com"

RECIPIENT = ["test@dinglicom.com"] ATTACHMENTS = []

class QMail(): def init(self, user, pwd, host): self.mail_user = user self.mail_pwd = pwd self.mail_server = smtplib.SMTP() self.mail_server.connect(host) self.mail_server.ehlo() self.mail_server.starttls() self.mail_server.ehlo() self.mail_server.login(self.mail_user, self.mail_pwd)

def __del__(self):
    self.mail_server.close()

def send_mail(self, recipient, subject, text, att_files=[]):
    msg = MIMEMultipart()
    msg["From"] = self.mail_user
    msg["Subject"] = subject
    msg["To"] = ",".join(recipient)
    msg.attach(MIMEText(text))
    if len(att_files) > 0:
        for file_name in att_files:
            msg.attach(self.get_attachment(file_name))
    self.mail_server.sendmail(self.mail_user, recipient, msg.as_string())

def get_attachment(self, file_name):
    content_type, encoding = mimetypes.guess_type(file_name)
    if content_type is None or encoding is not None:
        content_type = "application/octet-stream"
    main_type, sub_type = content_type.split('/', 1)
    file = open(file_name, "rb")
    if main_type == "text":
        attachment = MIMEText(file.read())
    elif main_type == 'message':
        attachment = email.message_from_file(file)
    elif main_type == 'image':
        attachment = MIMEImage(file.read(), _subType=sub_type)
    elif main_type == 'audio':
        attachment = MIMEAudio(file.read(), _subType=sub_type)
    else:
        attachment = MIMEBase(main_type, sub_type)
    attachment.set_payload(file.read())
    encode_base64(attachment)
    file.close()
    attachment.add_header('Content-Disposition', 'attachment', filename=os.path.basename(file_name))
    return attachment

def test(): mail = QMail("test@163.com", "test", MAIL_163_HOST) mail.send_mail(["test@dinglicom.com"], "sub_test", "text_test", r"G:\WorkSpace\Doing\CMMI文檔模板.dot")

if name == 'main': test()</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!