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

这里给大家分享一段自己写的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函数发送构建好的邮件信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值