Python自动发送邮件

来源:互联网 发布:php开发简历自己缺点 编辑:程序博客网 时间:2024/05/21 06:32

本文主要介绍如何使用python实现邮件的自动发送。

首先这个功能要求使用的模块是stmplib,email。

SMTP(Simple Message Transport Protocol):简单信息传输协议,只能由于发送邮件

下面是简要的程序:

#!/usr/bin/python# -*- coding: UTF-8 -*- import smtplibfrom email.mime.text import MIMEText # 第三方SMTP服务mail_host="smtp.163.com"   # 设置服务器mail_user="***@163.com"    # 用户名mail_pass="***"# 密码 receiver ='***@qq.com'     # 接收邮箱 message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')message['From'] = 'Python'+'<'+mail_user+'>'message['To'] =  receiver message['Subject'] = '【Python Test】邮件测试' try:    smtpObj = smtplib.SMTP()# 实例化    smtpObj.connect(mail_host, 25)     # 25为 SMTP 端口号    smtpObj.login(mail_user,mail_pass) # 邮箱登录    print('登录成功!')    smtpObj.sendmail(mail_user, receiver, message.as_string()) # 发送邮件    smtpObj.quit()  # 邮件退出    print("恭喜:邮件发送成功!")except smtplib.SMTPException:    print("错误:无法发送邮件")

那么,实际情况下会有更多的需求。比如说定时发送邮件,邮件群发,携带附件,插入图片,插入超链接等等。这些功能如何实现呢?

下面继续介绍。

1.【定时发送邮件】

这个功能其实很容易实现,利用time模块就能做到。基本思路是:输入你想要发送邮件的时间,获取当前的时间后不断和你设置的时间比较,当时间到了的时候,程序继续往下跑,自动发送邮件。

下面给出我的程序:

#coding=utf-8import timeimport smtplibfrom email.mime.text import MIMETextmailto_list='***@qq.com'           #收件人mail_host="smtp.163.com"                    #使用的邮箱的smtp服务器地址mail_user="***                  #用户名mail_pass="***                      #密码mail_postfix="163.com"                      #邮箱的后缀def send_mail(to_list,sub,content):    me="Python测试"+"<"+mail_user+"@"+mail_postfix+">"    msg = MIMEText(content,'plain','utf-8')    msg['Subject'] = sub    msg['From'] = me    msg['To'] = to_list                try:        server = smtplib.SMTP()        server.connect(mail_host)            #连接服务器        server.login(mail_user,mail_pass)    #登录操作        print(u'登录成功!')        server.sendmail(me, to_list, msg.as_string())        print(u'发送成功!')        server.quit()    except Exception:        print(u'发送失败')print('现在时间时间是:\n'+time.strftime('%H:%M:%S',time.localtime()))hour=int(input('输入发送的时间\n时钟:'))minute=int(input('分钟:'))second=int(input('秒钟:'))while True:    current_time = time.localtime(time.time())    if(current_time.tm_hour == hour) and (current_time.tm_min == minute) and (current_time.tm_sec == second):        print('时间到,开始自动发送邮件')        time.sleep(1)        send_mail(mailto_list,"Python邮件测试","Hello world")  #邮件主题和邮件内容


2.【邮件群发】

其实只要传入的receiver为一个list类型的数据,就能实现群发。不过,这里还有一个问题需要格外注意。

注意看下面msg['To']这一行

#coding=utf-8import timeimport smtplibfrom email.mime.text import MIMETextmailto_list=['***@qq.com','***@qq.com',...]  #收件人mail_host="smtp.163.com"           #使用的邮箱的smtp服务器地址mail_user="***                     #用户名mail_pass="***                      #密码mail_postfix="163.com"                      #邮箱的后缀def send_mail(to_list,sub,content):    me="Python测试"+"<"+mail_user+"@"+mail_postfix+">"    msg = MIMEText(content,'plain','utf-8')    msg['Subject'] = sub    msg['From'] = me    msg['To'] = ','.join(to_list)     # 收件列表以‘;’连接    try:        server = smtplib.SMTP()        server.connect(mail_host)            #连接服务器        server.login(mail_user,mail_pass)    #登录操作        print(u'登录成功!')        server.sendmail(me, to_list, msg.as_string())        print(u'发送成功!')        server.quit()    except Exception:        print(u'发送失败')send_mail(mailto_list,"Python邮件测试","Hello world")  #邮件主题和邮件内容


其他情况有待研究,呵呵。

当然,还有许多的可能性和创意可以挖掘。限制你的不是能力,而是想象力。

原创粉丝点击