此文章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. ThinkPHP5.0中的build.php自动生成所需的目录结构的详细方法

    一.来到根目录下,找到bulid.php文件进行改写. 改写方法:保留常用的目录结构,其余按照需求改吧! 二.复制一份build.php文件到application目录下 此时根目录下的bulid.p ...

  2. Sublime Text 2 快捷键用法大全

    Ctrl+D 选词 (反复按快捷键,即可继续向下同时选中下一个相同的文本进行同时编辑) Ctrl+G 跳转到相应的行 Ctrl+J 合并行(已选择需要合并的多行时) Ctrl+L 选择整行(按住-继续 ...

  3. MySQL整数类型字段的长度总结

    MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4)). 该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度.(类似使用LPAD函数效果) 在INT( ...

  4. UVA_694:The Collatz Sequence

    Language: C++ 4.8.2 #include<stdio.h> int main(void) { long long int m, n, copy_m; ; ; ) { sca ...

  5. @codeforces - 932F@ Escape Through Leaf

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个 n 个点的树(标号1~n),以结点 1 为根.每个结点 ...

  6. 【转载】Combination Sum

    Combination Sum Given a set of candidate numbers (C) and a target number (T), find all unique combin ...

  7. php 练习 1

    php5 echo 和 print 语句 在PHP 中, 有两种基本的输出方法:echo 和print . 在本教程中,我们几乎在每个例子中都会用到echo和print.因此,本节为您讲解更多关于这两 ...

  8. react-cli

    更新日志: v1.2.0 ...未完待续 v1.1.0 添加editorconfig 配置ESLint 集成prettier 集成 lint-staged 实现细节: 添加editorconfig e ...

  9. LeetCode69 Sqrt(x)

    题意: Implement int sqrt(int x). Compute and return the square root of x.(Medium) 分析: 二分搜索套路题,不能开方开尽的时 ...

  10. 是时候了解React Native了

    文章首发于简书,欢迎关注 随着科技的发展,手机开发也在向好的方向不停的转变.IOS和Android两大手机操作横空出世,称霸江湖.我们每开发一个手机软件最少都需要开发这两个终端. 两大操作系统都在不断 ...