您的位置:首页 > 其它

博客刚开通,希望大家多多支持哈~~~~

2016-10-27 18:57 363 查看
这里给大家分享一段自己写的python代码。实现利用smtp发送邮件,。

import argparse

import os

import getpass

import re

import sys

import smtplib

from email.mime.image import MIMEImage #import 子类或者内部类,使用from可以在后文引用时省略父类

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

SMTP_SERVER = 'smtp.qiye.163.com'

SMTP_PORT = 25

def send_email(sender,recipient):

    msg = MIMEMultipart()#邮件内容格式从单一改成了多种,这个时候初始化Message变量就不能再用MIMEText了,

                         #而是使用MIMEMultipart()。之后如果要添加不同的信息的话,就使用attach方法

    msg['subject'] = 'python email test'

    msg['to'] = recipient

    msg['from'] = sender

    subject = 'python email test'

    message = 'images attached'

    #attach image files

    files = os.listdir(os.getcwd())

    gifsearch = re.compile(".gif",re.IGNORECASE)

    files = filter(gifsearch.search,files)

    for filename in files:

        path = os.path.join(os.getcwd(),filename)

        if not os.path.isfile(path):

            continue

        img = MIMEImage(open(path,'rb').read(),_subtype="gif")#限定了邮件对象类别为gif

        img.add_header('content-disposition','attachment',filename=filename)

        msg.attach(img)#添加信息,就使用attach方法

    part = MIMEText('text',"plain")#限定了邮件对象类别为text

    part.set_payload(message)

    msg.attach(part)#同上--像邮件中添加对象。

    #create smtp session

    session = smtplib.SMTP(SMTP_SERVER,SMTP_PORT)#实例一个smtp对象

    session.ehlo()#用户认证

    session.starttls()#STARTTLS是对纯文本通信协议的扩展。它将纯文本连接升级为加密连接(TLS或SSL), 而不是使用一个单独的加密通信端口。

    session.ehlo()

    password = getpass.getpass(prompt='enter your google password')

    session.login(sender,password)

    session.sendmail(sender,recipient,msg.as_string())

    print("email sent")

    session.quit()

if __name__=='__main__':

    parser = argparse.ArgumentParser(description='email sending example')

    parser.add_argument('--sender',action="store",dest="sender")

    parser.add_argument('--recipient',action="store",dest="recipient")

    given_args = parser.parse_args()

    send_email(given_args.sender,given_args.recipient)

#SMTP服务需要验证. 您的发信服务器需要密码验证才能进行邮件发送.这个授权码替代上面代码部分的passwd即可.授权码在邮箱的设置里获取

#

#思路:构造一个方法,方法里一般需要实现的功能有:实例化邮件对象,

#      并向其中添加邮件体(各个类下不同格式的邮件体),然后实例化一个smtp对象,用于链接服务器,然后调用send函数发送构建好的邮件信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: