Python自动发送邮件

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

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

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

下面是简要的程序:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import smtplib
from 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-8
import time
import smtplib
from email.mime.text import MIMEText
mailto_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-8
import time
import smtplib
from email.mime.text import MIMEText
mailto_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")  #邮件主题和邮件内容


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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
定时自动发送邮件服务使用说明 该软件运行环境需要.Net 3.5支持,Win7系统上可以直接运行. 主要功能可以定时自动发送邮件,发送程序做成服务形式,用户无需登录, 只要电脑是开启状态,就会自动执行发送邮件. 包含的文件, 1.AutoSendMail.exe --设置程序 2.AutoSendMail_Log.txt --存放日志的文本文件. 可自动生成 3.AutoSendMail_Setting.xml --配置文件 4.AutoSendMailService.exe --服务程序 5.InstallUtil.exe --微软的安装服务必须程序 6.tasks.mdb --Access数据库文件,用于存放邮箱内容. 可更改文件 7.安装服务.bat 8.使用说明.txt 9.卸载服务.bat 安装步骤: 第一步:安装服务 运行“安装服务.bat”文件。(需要管理员权限) 第二步:修改配置文件 修改好配置文件AutoSendMail_Setting.xml。确保Access数据库连接正确,每个任务的发送时点,和邮件信息。 每次修改配置文件必需重新启动服务才生效。 第三步:启动服务 a.从服务管理控制台启动服务,运行services.msc命令打开控制台。 b.通过设置程序启动服务。(需要管理员权限) 如果删除服务,则运行“卸载服务.bat”。 接口定义: 每个任务需要在指定的Access数据库里设置一个视图或表,用于存放邮件信息, 字段格式: 第一字段:ID 自动编号 第二字段:收件人 文本类型 第三字段:抄送人 文本类型 第四字段:主题 文本类型 第五字段:内容 备注类型 第六字段:发送次数 数字类型 备注:程序通过ID查找记录,来更新发送次数的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值