使用email模块和smtplib模块,内容比较固定,配好了即可实现,代码如下:

一、普通邮件发送

import smtplib

from email.mime.text import MIMEText

email_host = 'smtp.163.com' #邮箱地址

email_user = 'XXX@163.com' # 发送者账号

email_pwd = 'XXX' # 发送者的密码

maillist ='XXX@XXXX.com'

#收件人邮箱,多个账号的话,用逗号隔开

me = email_user

msg = MIMEText('这是个python测试邮件,不用回复。') # 邮件内容

msg['Subject'] = 'python测试' # 邮件主题

msg['From'] = me # 发送者账号

msg['To'] = maillist # 接收者账号列表

smtp = smtplib.SMTP(email_host,port=25) # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25

smtp.login(email_user, email_pwd) # 发送者的邮箱账号,密码

smtp.sendmail(me, maillist, msg.as_string())

# 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串

smtp.quit() # 发送完毕后退出smtp

print ('email send success.')

注意

1. 发送者密码这里不是平时登录邮箱的密码,而是开启登录第三方邮件客户端的授权码。

2. 多数邮箱的smtp的端口号都是25,个别的请具体确认。

发邮件的代码封装成函数:

import smtplib

from email.mime.text import MIMEText

def send_mail(username, passwd, recv, title, content, mail_host='smtp.163.com', port=25):

'''

发送邮件函数,默认使用163smtp

:param username: 邮箱账号 xx@163.com

:param passwd: 邮箱密码

:param recv: 邮箱接收人地址,多个账号以逗号隔开

:param title: 邮件标题

:param content: 邮件内容

:param mail_host: 邮箱服务器

:param port: 端口号

:return:

'''

msg = MIMEText(content) # 邮件内容

msg['Subject'] = title # 邮件主题

msg['From'] = username # 发送者账号

msg['To'] = recv # 接收者账号列表

smtp = smtplib.SMTP(mail_host, port=port) # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25

smtp.login(username, passwd) # 发送者的邮箱账号,密码

smtp.sendmail(username, recv, msg.as_string())

# 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串

smtp.quit() # 发送完毕后退出smtp

print('email send success.')

email_user = 'xxxx@163.com' # 发送者账号

email_pwd = 'xxxxx' # 发送者密码

maillist = 'XXX@XXX.com'

title = '测试邮件标题'

content = '这里是邮件内容'

send_mail(email_user, email_pwd, maillist, title, content)

二、发带附件的邮件

import smtplib

#smtplib这个模块是管发邮件

from email.mime.text import MIMEText

#构造邮件内容

from email.mime.multipart import MIMEMultipart

#发带附件的邮件用的

email_host = 'smtp.163.com' #邮箱服务器地址

email_user = 'XXX@163.com' # 发送者账号

email_pwd = 'XXX'

# 发送者密码是邮箱的授权码,不是登录的密码

maillist = 'XXX@XXX.com'

#收件人邮箱,多个账号的话,用逗号隔开

new_msg = MIMEMultipart()

#构建了一个能发附件的邮件对象

new_msg.attach(MIMEText('这是Python测试发邮件的邮件,不要回复'))

# 邮件内容

new_msg['Subject'] = 'Python测试邮件带附件' # 邮件主题

new_msg['From'] = email_user # 发送者账号

new_msg['To'] = maillist # 接收者账号列表

att = MIMEText(open('like_report.txt').read())

att["Content-Type"] = 'application/octet-stream'

att["Content-Disposition"] = 'attachment; filename="haha.txt"'

new_msg.attach(att)

smtp = smtplib.SMTP(email_host,port=25) # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25

smtp.login(email_user, email_pwd) # 发送者的邮箱账号,密码

smtp.sendmail(email_user, maillist, new_msg.as_string())

# 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串

smtp.quit() # 发送完毕后退出smtp

print ('email send success.')

三、封装发送邮件的类并验证

class SendMail(object):

def __init__(self,username,passwd,recv,title,content,

file=None,

email_host='smtp.163.com',port=25):

self.username = username

self.passwd = passwd

self.recv = recv

self.title = title

self.content = content

self.file = file

self.email_host = email_host

self.port = port

def send_mail(self):

msg = MIMEMultipart()

#发送内容的对象

if self.file:#处理附件的

att = MIMEText(open(self.file).read())

att["Content-Type"] = 'application/octet-stream'

att["Content-Disposition"] = 'attachment; filename="%s"'%self.file

msg.attach(att)

msg.attach(MIMEText(self.content))#邮件正文的内容

msg['Subject'] = self.title # 邮件主题

msg['From'] = self.username # 发送者账号

msg['To'] = self.recv # 接收者账号列表

self.smtp = smtplib.SMTP(self.email_host,port=self.port)

#发送邮件服务器的对象

self.smtp.login(self.username,self.passwd)

try:

self.smtp.sendmail(self.username,self.recv,msg.as_string())

except Exception as e:

print('出错了。。',e)

else:

print('发送成功!')

def __del__(self):

self.smtp.quit()

if __name__ == '__main__':

m = SendMail(

username='XXX@163.com',passwd='XXX',recv='XXX@XXX.com',

title='新鞋的发送邮件',content='哈哈哈啊哈哈哈哈',file='like_report.txt'

)

m.send_mail()

python发送邮件有逗号_Python发送邮件相关推荐

  1. python中的逗号_Python中的逗号有什么作用?

    最近研究python  遇到个逗号的问题 一直没弄明白 今天总算搞清楚了 1.逗号在参数传递中的使用: 这种情况不多说  没有什么不解的地方 就是形参或者实参传递的时候参数之间的逗号 例如def  a ...

  2. python发送邮件带附件_Python发送邮件(带附件)

    import smtplib                           #发送邮件模块 from email.mime.text import MIMEText    #定义邮件内容 fro ...

  3. python编辑邮件格式_python发送邮件模板

    python发送邮件(不带附件)模板 import smtplib from email.mime.text import MIMEText from email.header import Head ...

  4. python发送邮件是否成功_python发送邮件(smtplib)

    我们在测试完成后,都会发一份邮件也就是我们的测试报告,那么既然要自动化,是不是也可以通过python帮助我们发送邮件?当然这么强大的python可以帮助你完成这个需求 SMTP SMTP(Simple ...

  5. python发邮件实例_python 发送邮件实例

    文本形式发邮件 #!/usr/bin/env python3 #coding: utf-8 importsmtplib fromemail.mime.textimportMIMEText fromem ...

  6. python怎么加逗号_python – 什么是最简单的方法添加逗号到一个整数?

    到目前为止还没有人提到在版本2.7中添加到格式规范迷你语言的新的','选项 – 参见 What's New in Python 2.7 document中的 PEP 378: Format Speci ...

  7. python列表去掉逗号_python – Scrapy crawler,从字符串中删除逗号

    def parse_item(self, response): for jobs in response.xpath('//div[@itemtype="http://schema.org/ ...

  8. python怎样实现封装_大牛教你如何封装 Python 代码,实现自动发送邮件只需三行代码...

    在运维开发中,使用 Python 发送邮件是一个非常常见的应用场景.今天一起来探讨一下,GitHub 的大牛门是如何使用 Python 封装发送邮件代码的. 一般发邮件的方式 SMTP是发送邮件的协议 ...

  9. python封装sql脚本 github_Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码...

    原标题:Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码 在运维开发中,使用 Python 发送邮件是一个非常常见的应用场景.今天一起来探讨一下,GitHub 的大牛门是如何使 ...

最新文章

  1. 电脑怎么分屏2个显示器_程序员一台电脑装2个显示屏?因为专业
  2. OSI 七层参考模型
  3. Oracle 11g必须开启的服务及服务详细介绍
  4. 有赞11·11:全链路压测方案设计与实施详解
  5. 递归的效率问题及递归与循环比较
  6. Python笔记——break的注意事项
  7. 关于利用np.contour画出logistic模型决策边界(plot_decision_regions)的一点感想
  8. [转]网易云音乐Android版使用的开源组件
  9. 2引擎帮助文档_使用Sentence Transformers和Faiss构建语义搜索引擎
  10. sap后台配置原因代码_SAP FI后台配置清单
  11. 儒豹手机搜索发布2008年各频道关键词排行榜
  12. 【英语语法入门】 第11讲 名词
  13. 阅读心得1:《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践 》
  14. mac下展示隐藏文件
  15. 抑制电源模块电磁干扰的几种方法
  16. 3d游戏设计读书笔记六
  17. 露珠谷如何改变了我的生活
  18. 帆软报表图表组件开发记录
  19. 使用小觅智能相机(MYNTEYE-D1010-50)建立RTABmap地图
  20. 关于商品规格(SKU)的设置

热门文章

  1. ARP攻击的心得体会
  2. CSDN助力HBuilder,为开发者提供源码托管服务
  3. Linux 之父家断电六天:内核更新延期;华为 EMUI 11 用户突破1亿;美国得州最大电力公司申请破产 | 极客头条...
  4. 用阿里开源的 Nacos 搞微服务真香!
  5. 全球顶级开源大神们现身 COSCon‘20
  6. 8 天扩容超 100 万核,腾讯会议正在刷新历史
  7. 当代刻板程序员生态图鉴!网友:哈哈哈太真实了
  8. 划重点!2019年这类程序员非常稀缺,年薪超平均水平10倍
  9. 阿里云边缘计算三年,都为开发者带来了什么?
  10. IBM 推出全球首台计算性能最强悍的 53 位量子计算机