• 邮件发送 smtplib


    ---恢复内容开始---

    # 用于发送邮件的模块
    import smtplib
    
    # QQ邮箱/163邮箱的邮件发送:py文件发送邮件内容相当于一个第三方的客户端,借助于QQ/163邮箱服务器来发送的邮件。
    
    # QQ邮件
    # 1> 配置邮箱SMTP服务器的主机地址,将来使用这个服务器收发邮件。
    # HOST = 'smtp.qq.com'
    # # 2> 配置服务的端口,默认的邮件端口是25.
    # PORT = '465'
    # # 3> 指定发件人和收件人。
    # FROM = '935388739@qq.com'
    # TO = '935388739@qq.com'
    # # 4> 邮件标题
    # SUBJECT = '这是一封测试邮件'
    # # 5> 邮件内容
    # CONTENT = '这是<1640284366@qq.com>发送过来的邮件。请注意查收!'
    #
    # # 创建邮件发送对象
    # # 普通的邮件发送形式
    # # smtp_obj = smtplib.SMTP()
    #
    # # 数据在传输过程中会被加密。
    # smtp_obj = smtplib.SMTP_SSL()
    #
    # # 需要进行发件人的认证,授权。
    # # smtp_obj就是一个第三方客户端对象
    # smtp_obj.connect(host=HOST, port=PORT)
    #
    # # 如果使用第三方客户端登录,要求使用授权码,不能使用真实密码,防止密码泄露。
    # res = smtp_obj.login(user=FROM, password='zsgncmacktxkbdhb')
    # print('登录结果:',res)
    #
    # # 发送邮件
    # msg = '
    '.join(['From: {}'.format(FROM), 'To: {}'.format(TO), 'Subject: {}'.format(SUBJECT), '', CONTENT])
    # smtp_obj.sendmail(from_addr=FROM, to_addrs=[TO], msg=msg.encode('utf-8'))
    
    # 网易163邮箱
    HOST = 'smtp.163.com'
    # 2> 配置服务的端口,默认的邮件端口是25.
    PORT = '25'
    # 3> 指定发件人和收件人。
    FROM = '15036203230@163.com'
    TO = '1264410796@qq.com'
    # 4> 邮件标题
    SUBJECT = '来自马化腾'
    # 5> 邮件内容
    CONTENT = '你马上就会毕业'
    
    # 创建邮件发送对象
    # 普通的邮件发送形式
    smtp_obj = smtplib.SMTP()
    
    # 数据在传输过程中会被加密。
    # smtp_obj = smtplib.SMTP_SSL()
    
    # 需要进行发件人的认证,授权。
    # smtp_obj就是一个第三方客户端对象
    smtp_obj.connect(host=HOST, port=PORT)
    
    # 如果使用第三方客户端登录,要求使用授权码,不能使用真实密码,防止密码泄露。
    res = smtp_obj.login(user=FROM, password='lzh7777777')
    print('登录结果:',res)
    
    # 发送邮件
    msg = '
    '.join(['From: {}'.format(FROM), 'To: {}'.format(TO), 'Subject: {}'.format(SUBJECT), '', CONTENT])
    smtp_obj.sendmail(from_addr=FROM, to_addrs=TO, msg=msg.encode('utf-8'))
    import smtplib
    from email.mime.text import MIMEText
    
    import logging
    class EmailSend(object):
        def __init__(self):
            self.logging = logging.getLogger('Waring')
            self.email_host = 'smtp.qq.com'
            self.email_port = '465'
            self.email_pass = 'zsgncmacktxkbdhb'
    
        def send_text_email(self, from_addr, to_addrs, subject, content):
            self.logging.warning('send_text_email is willed 丢弃')
            self.logging.error('send_text_email is None')
            message_text = MIMEText(content, 'plain', 'utf8')
            message_text['From'] = from_addr
            message_text['To'] = to_addrs
            message_text['Subject'] = subject
    
            try:
                # 在创建客户端对象的同时,连接到邮箱服务器。
                client = smtplib.SMTP_SSL(host=self.email_host, port=self.email_port)
                login_result = client.login(from_addr, self.email_pass)
                if login_result and login_result[0] == 235:
                    print('登录成功')
                    client.sendmail(from_addr, to_addrs, message_text.as_string())
                    print('邮件发送成功')
                else:
                    print('邮件发送异常:',login_result[0], login_result[1])
            except Exception as e:
                # print('连接邮箱服务器异常:',e)
                self.logging.error('连接邮箱服务器异常:{}'.format(e))
        def send_image_email(self):
            pass
    
        def send_word_email(self):
            pass
    
        def send_video_email(self):
            pass
    
    """
    1. start_spider 
    """
    email = EmailSend()
            content = '爬虫启动时间:{}'.format(datetime.now())
            email.send_text_email('935388739@qq.com', '935388739@qq.com', '爬虫启动', content)

    推展

    # 发送带有附件的邮件。
    
    import smtplib
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage
    from email.mime.multipart import MIMEMultipart, MIMEBase
    from email import encoders
    
    HOST = "smtp.qq.com"
    PORT = "465"
    SUBJECT = "测试邮件"
    FROM = "15036203230@163.com"
    TO = "1264410796@qq.com"
    
    # 1> 创建用于发送带有附件文件的邮件对象
    # related: 邮件内容的格式,采用内嵌的形式进行展示。
    message = MIMEMultipart('related')
    
    # 向message对象中添加不同类型的邮件内容。
    
    # 发送内容是html的邮件,邮件中含有图片。
    # 参数2:指定邮件内容类型,默认是plain,表示没有任何格式的纯文本内容。
    message_html = MIMEText('<h1>含有图片的邮件:</h1><p>接下来就会展示这个图片了</p><img src="cid:images">', 'html', 'utf8')
    
    # 2> 需要将message_html对象,添加至message中,等待被发送。
    message.attach(message_html)
    
    def load_image(path, cid):
        data = open(path, 'rb')
        message_img = MIMEImage(data.read())
        data.close()
    
        # 给图片绑定cid,将来根据这个cid的值,找到标签内部对应的img标签。
        message_img.add_header('Content-ID', cid)
    
        # 返回MIMEImage的对象,将该对象放入message中
        return message_img
    
    # 向img标签中指定图片
    message.attach(load_image('scrapy_img.png', 'images'))
    
    # 文档附件、图片附件等。
    # 一般如果数据是二进制的数据格式,在指定第二个参数的时候,都使用base64,一种数据传输格式。
    message_docx = MIMEText(open('test.docx', 'rb').read(), 'base64', 'utf8')
    # message_docx['Content-Disposition'] = 'attachment;filename=test.docx'
    message_docx.add_header('content-disposition', 'attachment', filename='mytest.docx')
    message.attach(message_docx)
    
    
    message_docx1 = MIMEText(open('测试.docx', 'rb').read(), 'base64', 'utf8')
    
    # 如果文件名是中文的:
    # add_header()能够正常的显示中文;
    # message_docx1['Content-Disposition']是无法正常显示中文的。
    
    message_docx1['Content-Disposition'] = 'attachment;filename=测试.docx'
    # message_docx1.add_header('content-disposition', 'attachment', filename='测试.docx')
    message.attach(message_docx1)
    
    
    message_image = MIMEText(open('scrapy_img.png', 'rb').read(), 'base64', 'utf8')
    # message_image['Content-Disposition'] = 'attachment;filename=test.png'
    message_image.add_header('content-disposition', 'attachment', filename='mytest.png')
    message.attach(message_image)
    
    message['From'] = FROM
    message['Subject'] = SUBJECT
    message['To'] = TO
    
    client = smtplib.SMTP_SSL()
    client.connect(HOST, PORT)
    print('result: ',client.login(FROM, 'zsgncmacktxkbdhb'))
    
    print('发送结果:',client.sendmail(from_addr=FROM, to_addrs=[TO], msg=message.as_string()))

    ---恢复内容结束---

  • 相关阅读:
    iOS app版本更新CheckVersion_Swift
    ios插件化开发
    开源框架RSA_Swift
    iOS SKStoreProductViewController的应用
    FMDB的使用
    iOS的MVP设计模式
    iOS UI帧率优化经验
    SKStoreReviewController之程序内评价
    Axure使用chrome插件
    修改每次《创建》项目maven仓库的默认路径
  • 原文地址:https://www.cnblogs.com/eunuch/p/9309175.html
Copyright © 2020-2023  润新知