专栏首页Rgcpython发送邮件

python发送邮件

邮件发送系统大致流程

为了更好的理解邮件发送功能的实现,要先了解邮件发送系统的大致流程。首先  电子邮件之间的相互发送接受就像  邮局邮件发送一样,从一个站点(邮件发送服务器)到目的地站点(邮件接收服务器),然后目的地站点处理收到的邮件,并发送给接受人。每个邮件服务器即担任发送也担任接受邮件,并且每个服务器地址,端口号,配置等也不同。

其实发送邮件的流程就 两部:

第一:写邮件

  • 写好发送方,接受方
  • 写好主题
  • 写好正文(包括附件,图片等)
  • 把信件整理在一起

第二:发送邮件

  • 连接发送邮件服务器
  • 登录邮箱
  • 发送邮件
  • 退出邮箱

代码部分:

# -*- coding:utf-8 -*-
import smtplib
from email.header import Header
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
#创建邮件对象,相当于信纸
msg = MIMEMultipart()
#邮件发送方
msg['From'] = 'XXXXXXXX.qq.com'
#邮件接收方
msg['To'] = '1212112@qq.com'
#邮件主题
msg['Subject'] = Header('这是邮箱主题部分', charset='UTF-8')#中文主题

#文本内容
txt = '亲爱的用户'
part1 = MIMEText(txt, 'plain', 'utf-8')
#添加到邮件中
msg.attach(part1)

#超文本内容,放有图片,注意src路径,此为放在同一目录中
html = '<div><img src="cid:image1">亲爱的</div>'
#一定要设置邮件格式,否则可能会乱码,当时接手别人手中没加邮件格式的项目,坑了我半天
part2 = MIMEText(html, 'html', 'utf-8')
#添加到邮件中
msg.attach(part2)

#图片放到邮件中
# 指定图片为当前目录
fp = open('test.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
# 定义图片 ID,在 HTML 文本中引用
msgImage.add_header('Content-ID', '<image1>')
msg.attach(msgImage)

#加入文本附件
att2 = MIMEText('这是附件里的文字', 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
#设置附件名为runoob.txt
att2["Content-Disposition"] = 'attachment; filename="runoob.txt"'
#附件放在邮件中
msg.attach(att2)
#加入excel附件
part=MIMEApplication(open('demo_zuoye.xlsx','rb').read())
part.add_header('Content-disposition','attachment',filenmae='demo_zuoye.xlsx')
msg.attach(part)
#非ssl方式的smtp(简单邮件发送协议),下面注释为ssl方式的smtp
smtp = smtplib.SMTP() 
# smtp = smtplib.SMTP_SSL() 

try: 
    #连接主机地址 
    smtp.connect('mail.yto.net.cn:25')
    #登录邮箱,需要邮箱账号,密码
    smtp.login('XXXXXXXX.qq.com','234123') 
    #发送邮件,需要登录的邮箱号,发送方的邮箱号,发送内容 
    smtp.sendmail('XXXXXXXX.qq.com', '1212112@qq.com', msg.as_string())
    #退出邮箱 
    smtp.quit() 
    print 'The mail is sended successly.' 
except smtplib.SMTPException,e:
    print "Error: 无法发送邮件",e

发送结果:

注意点:当自己邮箱作为邮件发送方时,注意邮件服务器的设置里把smtp服务打开

其他发送邮件的模块:Yagmail (此模块简单易用)

https://www.cnblogs.com/fnng/p/7967213.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • memory_profiler的使用

    作用:memory_profiler是用来分析每行代码的内存使用情况 使用方法一:    1.在函数前添加 @profile         2.运行方式: p...

    用户1558882
  • Flask配置Cors跨域

    跨域是指:浏览器A从服务器B获取的静态资源,包括Html、Css、Js,然后在Js中通过Ajax访问C服务器的静态资源或请求。即:浏览器A从B服务器拿的资源,资...

    用户1558882
  • 项目中记录影响性能的缓慢数据库查询

    如果程序性能随着时间推移不断降低,那很有可能是因为数据库查询变慢了,随着数据库规模的增长,这一情况还会变得更糟。优化数据库有时很简单,需要在程序和数据库之间加入...

    用户1558882
  • 邮件群发时哪些因素会影响送达率

    作为平时不怎么使用邮箱发邮件的朋友们,可能很少会考虑邮件为什么会发不出去这个问题,其实只有大量的去群发邮件的做邮件营销的朋友们才会有这样的烦恼。邮件发送其实跟三...

    彼岸@花开
  • Python2.7 smtplib发送带附件邮件报错STARTTLS解决方法

    最近在SIOMP系统中添加一项功能时,即自动发送带附件邮件到指定邮箱时,发现在发送时报错:错误信息:STARTTLS extension not supp...

    木子-Lee
  • 发送邮件那些事

    世界的第一封电子邮件 1969年10月世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简短消息。 据《互联网周刊》报道世界上的第...

    纯洁的微笑
  • Python 发送邮件脚本

    ? 作者:Jesse-csdn 来源: http://blog.csdn.net/l2show/ar...

    小小科
  • 如何使用 Spring Boot 开发邮件系统?

    互联网发展到现在,邮件服务已经成为互联网企业中必备功能之一,应用场景非常广泛,比较常见的有:用户注册、忘记密码、监控提醒、企业营销等。

    纯洁的微笑
  • 一封伪造邮件引发的“探索”(涉及钓鱼邮件、SPF和DKIM等)

    0x00. 引言 我用swaks 发送一封以我们公司CTO为显示发件人(腾讯企业邮箱)的伪造邮件给我的一个同事,邮件的内容就是让这位同事去CTO的办公司一趟,没...

    FB客服
  • 计算机网络自学笔记:FTP和SMTP

    HTTP和FTP都是文件传输协议,但FTP使用两个并行的TCP连接来传输文件,一个是控制连接(controlconnection),一个是数据连接(dataco...

    云时之间

扫码关注云+社区

领取腾讯云代金券