• 对邮箱的操作


    学习地址:http://blog.szwyll.com/archives/146
    1.登录邮箱
        # 定义一些常量
        # 收件人email, 发件人email,登录邮箱的授权码(mail_password)
        server = smtplib.SMTP()
        server.connect('smtp.qq.com', 25)
        server.login(mail_name, mail_password)
    2.发送邮件
        # 定义邮件内容
        # 纯文本邮件,html文件,包含附件的文件
        # 邮件的必须内容:From:发件人email  To: 收件人email(多个收件人用,隔开)  Subject: 邮件主题
        发送邮件
        server.sendmail(mail_name, receiver, msg.as_string())
        server.quit()

    一、发送纯文本文件

    import smtplib
    from email.mime.application import MIMEApplication
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.header import Header
    
    receiver = ['xxx@qq.com']
    mail_name = 'xxxx@qq.com'  # 发送人邮箱地址
    mail_password = 'pqymqfvvlmdabcbc'  # 注意:这里不是密码,而应该填写授权码!!
    
    
    # 编辑邮件内容
    # 1.收件人,主题,正文
    msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
    msg['From'] = mail_name
    msg['To'] = ''.join(receiver)
    msg['Subject'] = Header('来自SMTP的问候...', 'utf-8').encode()
    
    # 发送内容
    try:
        # 登陆邮箱
        server = smtplib.SMTP()
        server.connect('smtp.qq.com', 25)
        server.login(mail_name, mail_password)
    
        # 发送邮件
        server.sendmail(mail_name, receiver, msg.as_string())
        server.quit()
        print('Success')
    except smtplib.SMTPException as e:
        print('Failure:', str(e))

    二、发送HTML邮件

    import smtplib
    from email.mime.application import MIMEApplication
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.header import Header
    
    receiver = ['xxx@qq.com']
    mail_name = 'xxxx@qq.com'  # 发送人邮箱地址
    mail_password = 'pqymqfvvlmdabcbi'  # 注意:这里不是密码,而应该填写授权码!!
    
    
    # 编辑邮件内容
    # 1.收件人,主题,正文
    msg = MIMEText('<html>'
                   '<body>'
                   '<h1>Hello</h1>'
                   '<p>send by '
                   '<a href="http://www.baidu.com">baidu</a>'
                   '...'
                   '</p></body></html>', 'html', 'utf-8')
    msg['From'] = mail_name
    msg['To'] = ''.join(receiver)
    msg['Subject'] = Header('来自SMTP的问候...', 'utf-8').encode()
    
    # 发送内容
    try:
        # 登陆邮箱
        server = smtplib.SMTP()
        server.connect('smtp.qq.com', 25)
        server.login(mail_name, mail_password)
    
        # 发送邮件
        server.sendmail(mail_name, receiver, msg.as_string())
        server.quit()
        print('Success')
    except smtplib.SMTPException as e:
        print('Failure:', str(e))

    三、发送附件邮件

    import smtplib
    from email import encoders
    from email.mime.application import MIMEApplication
    from email.mime.base import MIMEBase
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.header import Header
    
    receiver = ['xxx@qq.com']
    mail_name = 'xxxx@qq.com'  # 发送人邮箱地址
    mail_password = 'pqymqfvvlmdabcbc'  # 注意:这里不是密码,而应该填写授权码!!
    
    
    # 编辑邮件内容
    # 1.收件人,主题,正文
    # 邮件本身(MIMEMultipart) = 邮件正文(MIMEText) + MIMEBase(附件)
    #
    msg = MIMEMultipart()
    # 定义发件人,收件人,邮件主题
    msg['From'] = mail_name
    msg['To'] = ''.join(receiver)
    msg['Subject'] = Header('来自SMTP的问候...', 'utf-8').encode()
    # 添加邮件正文
    msg.attach(MIMEText('send with file...', 'plain', 'utf-8'))
    # 添加附件
    with open('F:\python_requests\myU.jpg', 'rb') as f:
        # 设置附件的MIME和文件名
        mime = MIMEBase('image', 'jpg', filename='myU.jpg')
        # 加上必要的头信息:
        mime.add_header('Content-Disposition', 'attachment', filename='test.png')
        mime.add_header('Content-ID', '<0>')
        mime.add_header('X-Attachment-Id', '0')
        # 读取附件内容
        mime.set_payload(f.read())
        # 用Base64编码
        encoders.encode_base64(mime)
        # 添加到MIMEMultipart
        msg.attach(mime)
    
    try:
        # 登陆邮箱
        server = smtplib.SMTP()
        server.connect('smtp.qq.com', 25)
        server.login(mail_name, mail_password)
    
        # 发送邮件
        server.sendmail(mail_name, receiver, msg.as_string())
        server.quit()
        print('Success')
    except smtplib.SMTPException as e:
        print('Failure:', str(e))

    四、再三的基础上将附件嵌入到正文

    import smtplib
    from email import encoders
    from email.mime.application import MIMEApplication
    from email.mime.base import MIMEBase
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.header import Header
    
    receiver = ['xxx@qq.com']
    mail_name = 'xxxx@qq.com'  # 发送人邮箱地址
    mail_password = 'pqymqfvvlmdabcbc'  # 注意:这里不是密码,而应该填写授权码!!
    
    
    # 编辑邮件内容
    # 1.收件人,主题,正文
    # 邮件本身(MIMEMultipart) = 邮件正文(MIMEText) + MIMEBase(附件)
    # alternative:利用MIMEMultipart就可以组合一个HTML和Plain,要注意指定subtype是alternative:
    # 如果收件人无法查看HTML格式的邮件,就可以自动降级查看纯文本邮件。
    
    msg = MIMEMultipart('alternative')
    # 定义发件人,收件人,邮件主题
    
    smtp_server = 'smtp.qq.com'
    smtp_port = 587
    msg['From'] = mail_name
    msg['To'] = ''.join(receiver)
    msg['Subject'] = Header('来自SMTP的问候...', 'utf-8').encode()
    # 添加邮件正文
    msg.attach(MIMEText('hello', 'plain', 'utf-8'))
    msg.attach(MIMEText('<html><body><h1>Hello</h1>' +
        '<p><img src="cid:0"></p>' +
        '</body></html>', 'html', 'utf-8'))
    # 添加附件
    with open('F:\python_requests\myU.jpg', 'rb') as f:
        # 设置附件的MIME和文件名
        mime = MIMEBase('image', 'jpg', filename='myU.jpg')
        # 加上必要的头信息:
        mime.add_header('Content-Disposition', 'attachment', filename='test.png')
        mime.add_header('Content-ID', '<0>')
        mime.add_header('X-Attachment-Id', '0')
        # 读取附件内容
        mime.set_payload(f.read())
        # 用Base64编码
        encoders.encode_base64(mime)
        # 添加到MIMEMultipart
        msg.attach(mime)
    
    try:
        # 登陆邮箱
        server = smtplib.SMTP(smtp_server, smtp_port)
        server.starttls()
        # server = smtplib.SMTP()
        # server.connect('smtp.qq.com', 25)
        server.login(mail_name, mail_password)
    
        # 发送邮件
        server.sendmail(mail_name, receiver, msg.as_string())
        server.quit()
        print('Success')
    except smtplib.SMTPException as e:
        print('Failure:', str(e))
  • 相关阅读:
    百度&高德地图小区景点边界轮廓实现
    使用Hexo & Github,搭建属于自己的博客
    网页背景图固定不动,不跟随滚动条滚动
    jQuery同步Ajax带来的UI线程阻塞问题及解决方法
    Java并发编程实战(5)- 线程生命周期
    Java并发编程实战(4)- 死锁
    Java并发编程实战(3)- 互斥锁
    Java并发编程实战(2)- Java内存模型
    Java并发编程实战(1)- 并发程序的bug源头
    软件测试待解决问题
  • 原文地址:https://www.cnblogs.com/854594834-YT/p/13789718.html
Copyright © 2020-2023  润新知