zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Mathematica查看内部定义
    Mathematica绘制曲面交线方法
    Mathematica新特性Inactive, 求解复杂微分方程
    Mathematica修改默认字体
    Mac系统下lipo, ar, nm等工具的使用简介
    centos8 安装php7.2以及php-fpm
    mysql8.0创建用户只能访问某一个数据库
    CentOS 7 yum安装 RabbitMQ
    Linux服务器PHP+MYSQL环境配置优化提升网站运行效率
    PHP 7.1安装xhprof进行性能分析
  • 原文地址:https://www.cnblogs.com/rgcLOVEyaya/p/RGC_LOVE_YAYA_361_2days.html
Copyright © 2011-2022 走看看