此文章github地址:https://github.com/GhostCNZ/Python_sendEmail

Python_sendEmail

使用Python内置的smtplib包和email包来实现邮件的构造和发送。

发送纯文本时:

1.需要导入Python3标准库中的smtplib包和email包来实现邮件的构造和发送。

import smtplib

# 发送字符串的邮件

from email.mime.text import MIMEText

# 处理多种形态的邮件主体需要 MIMEMultipart 类

from email.mime.multipart import MIMEMultipart

# 处理图片需要 MIMEImage 类

from email.mime.image import MIMEImage

2.配置邮件发送及接收人

fromaddr = '1oo88@sina.cn'  # 邮件发送方邮箱地址
password = '******' # 密码(部分邮箱为授权码)
toaddrs = ['1oo88@sina.cn', '1951995428@qq.com'] # 邮件接受方邮箱地址,注意需要[]包裹,这意味着可以写多个邮件地址群发

3.内容

#邮件内容设置

message = MIMEText('Python发邮件测试', 'plain', 'utf-8')

#邮件主题

message['Subject'] = '测试'

#发送方信息

message['From'] = fromaddr

#接受方信息

message['To'] = toaddrs[0]

4.登录并发送

try:
server = smtplib.SMTP('smtp.sina.cn') # sina邮箱服务器地址,端口默认为25
server.login(fromaddr, password)
server.sendmail(fromaddr, toaddrs, message.as_string())
print('success')
server.quit()

except smtplib.SMTPException as e:
print('error', e) # 打印错误

发送带有附件时:

1.设置email信息

#添加一个MIMEmultipart类,处理正文及附件
message = MIMEMultipart()
message['From'] = fromaddr
message['To'] = toaddrs[0]
message['Subject'] = 'title'

推荐使用html格式的正文内容,这样比较灵活,可以附加图片地址,调整格式等

with open('abc.html','r') as f:
content = f.read()
#设置html格式参数
part1 = MIMEText(content,'html','utf-8')

添加txt文本格式内容

#添加一个txt文本附件
with open('abc.txt','r')as h:
content2 = h.read()
#设置txt参数
part2 = MIMEText(content2,'plain','utf-8')
#设置附件头,添加文件名
part2['Content-Disposition'] = 'attachment;filename="abc.txt"'

添加照片附件

#添加照片附件
with open('1.png','rb')as fp:
picture = MIMEImage(fp.read())
#与txt文件设置相似
picture['Content-Type'] = 'application/octet-stream'
picture['Content-Disposition'] = 'attachment;filename="1.png"'

2.将内容添加到邮件主体中

message.attach(part1)
message.attach(part2)
message.attach(picture)

3.登录并发送

try:
smtpObj = smtplib.SMTP()
smtpObj.connect('smtp.sina.cn',25)
smtpObj.login(fromaddr,password)
smtpObj.sendmail(
fromaddr,toaddrs,message.as_string())
print('success')
smtpObj.quit()
except smtplib.SMTPException as e:
print('error',e)

注意事项:

一些邮箱登录比如 QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL,解决办法为:

#启动
smtpObj = smtplib.SMTP()
#连接到服务器
smtpObj.connect(mail_host,25)
#######替换为########
smtpObj = smtplib.SMTP_SSL(mail_host)

使用Python内置的smtplib包和email包来实现邮件的构造和发送。的更多相关文章

  1. python内置函数和魔法函数

    内置方法:Python中声明每一个类系统都会加上一些默认内置方法,提供给系统调用该类的对象时使用.比如需要实例化一个对象时,需要调用该类的init方法:使用print去打印一个类时,其实调用的是str ...

  2. Python学习:6.python内置函数

    Python内置函数 python内置函数,是随着python解释器运行而创建的函数,不需要重新定义,可以直接调用,那python的内置函数有哪些呢,接下来我们就了解一下python的内置函数,这些内 ...

  3. day25 内置常用模块(四): 模块和包

    阅读目录: 模块 import from xxx import xxx 包 import from xxx import xxx    from xxx  import *    __init__.p ...

  4. Python入门之 Python内置函数

    Python入门之 Python内置函数 函数就是以功能为导向,一个函数封装一个功能,那么Python将一些常用的功能(比如len)给我们封装成了一个一个的函数,供我们使用,他们不仅效率高(底层都是用 ...

  5. Python内置函数和内置常量

    Python内置函数 1.abs(x) 返回一个数的绝对值.实参可以是整数或浮点数.如果实参是一个复数,返回它的模. 2.all(iterable) 如果 iterable 的所有元素为真(或迭代器为 ...

  6. 一篇文章掌握 Python 内置 zip() 的全部内容

    一篇文章掌握 Python 内置 zip() 的全部内容 zip() 是 Python 中最好用的内置类型之一,它可以接收多个可迭代对象参数,再返回一个迭代器,可以把不同可迭代对象的元素组合起来. 我 ...

  7. python内置函数

    python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...

  8. python 内置函数和函数装饰器

    python内置函数 1.数学相关 abs(x) 取x绝对值 divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组 pow(x,y[,z]) 取x的y次方 ,等同于x ...

  9. Python内置的字符串处理函数整理

    Python内置的字符串处理函数整理 作者: 字体:[增加 减小] 类型:转载 时间:2013-01-29我要评论 Python内置的字符串处理函数整理,收集常用的Python 内置的各种字符串处理 ...

随机推荐

  1. JavaScript--放大镜

    上例图: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...

  2. PHP学习(数组)

    数组就是一个键值对组成的语言结构,键类似于酒店的房间号,值类似于酒店房间里存储的东西. PHP有两种数组:索引数组.关联数组. 索引和关联两个词都是针对数组的键而言的. 索引数组 先介绍下索引数组,索 ...

  3. ansible Ansible Galaxy ansible-playbook 安装 使用 命令 笔记 生成密钥 管控机 被管控机 wget epel源

    笔记 ansible 安装 与salt对比 相同 都是为了同时在多台机器上执行相同的命令 都是python开发 不同 agent(saltstack需要安装.ansible不需要) 配置(salt配置 ...

  4. Directx11教程(20) 一个简单的水面

    原文:Directx11教程(20) 一个简单的水面 nnd,以前发的这篇教程怎么没有了?是我自己误删除了,还是被系统删除了? 找不到存稿了,没有心情再写一遍了.      简单说一下,本篇教程就是实 ...

  5. vuxdemo1

    //main.js import Vue from 'vue' import router from './router' import store from './store' import axi ...

  6. 简单利用XSS获取Cookie信息实例演示

    简单利用XSS获取Cookie信息实例演示   首先要找到一个有XXS的站,这里就不整什么大站了,谷歌一下inurl:'Product.asp?BigClassName',搜出来的命中率也比较高.随便 ...

  7. @bzoj - 4298@ [ONTAK2015]Bajtocja

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定d张无向图,每张图都有n个点.一开始,在任何一张图中都没有任 ...

  8. Flask学习之九 分页

    英文博客地址:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-ix-pagination 中文翻译地址:http:// ...

  9. 14-1 jquery的dom操作和事件对象

    一 jquery的操作有,插入,修改,删除,克隆.具体见下方代码实例: <!DOCTYPE html> <html lang="en"> <head& ...

  10. Datanodes-心跳机制