使用python发送邮件

最近在学习python,刚好需要写个数据库调用存储过程结果的邮件通知的小脚本,特地记录下来以免日后忘记。

python能流行主要还是有很多的模块,而且这些模块的调用代码也很简洁,大大简化了工作。不过我是在忍受不了R语言的慢速度后才转向Python的,之后开始接触python除数据分析之外的其他模块。

下面的发送邮件的脚本:

# -*- coding: utf-8 -*-
"""
自定义发送邮件的模块
输入参数:
    title: 邮件标题
    messages: 邮件内容
    to_addr: 收件人,如果是多个收件人,将地址放在列表中即可
示例: 发邮件给两个人
    send_mail('这是标题','这是内容',['收件人1@qq.com','收件人2@163.com'])
"""
#邮件的模块
from email import encoders 
from email.header import Header
from email.mime.text import MIMEText 
from email.utils import parseaddr, formataddr
import smtplib

def send_mail(title,messages,to_addr=['12345678@qq.com'] ):
    from_addr= r'from_addr@chinatmg.com'  #设置发件人邮箱地址
    password = r'password'  #发件人邮箱密码
    #SMTP服务器
    smtp_server = 'smtp.chinatmg.com'  #设置SMTP服务器
    msg = MIMEText(messages, 'html', 'utf-8')
    #设置邮件主题(要先实例化msg后才能设置主题)
    msg['From'] = from_addr
    msg['To'] = ','.join(to_addr)  #据说这是一个bug,只有这样才能群发邮件
    msg['Subject'] = title 
    #连接服务器发送邮件
    server = smtplib.SMTP(smtp_server, 25)
    #server.starttls()  #开启加密传输
    server.set_debuglevel(1)
    server.login(from_addr, password)
    server.sendmail(from_addr,to_addr, msg.as_string())
    server.quit() 

说明:

1.发件人的邮箱服务器要支持SMTP,一般邮箱是默认开启的,如果失败就需要看看这个有没有开启了。如果能用Foxmail等这些客户端登陆,能发送邮件,就说明已经开启了SMTP服务。

2.如果需要群发邮件,只需要将多个地址放在收件人列表中就可以了。

3.这里没有开启SSL邮件加密服务,开启的方式也很简单,只需要在创建SMTP对象后,立刻调用starttls()方法,就创建了安全连接。后面的代码和前面的发送邮件代码完全一样。

4.msg = MIMEText(messages, ‘html’, ‘utf-8’) 中的’html’表示发送的是HTML邮件,这时候你需要构建HTML代码。如果只是需要发送简单的文本,就用 MIMEText(messages, ‘plain’, ‘utf-8’)。

5.python还能发送邮件附件,图表等,这个以后再补上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值