首页 > 其他分享 >imap连接126邮箱接收邮件

imap连接126邮箱接收邮件

时间:2024-01-04 18:02:22浏览次数:34  
标签:email IMAP 126 print 邮箱 type imap conn

接收邮件

import imaplib
import email
from email.header import decode_header
import argparse


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--imapserver", type=str, help="imap服务地址")
    parser.add_argument("--imapport", type=int, help="imap端口")
    parser.add_argument("--emailaddress", type=str, help="邮箱地址")
    parser.add_argument("--emailpassword", type=str, help="邮箱IMAP授权码")
    parser.add_argument("--savepath", type=str, help="附件保存目录")
    args = parser.parse_args()
    IMAP_SERVER,IMAP_PORT,EMAIL_ADDRESS,EMAIL_PASSWORD = args.imapserver,args.imapport,args.emailaddress,args.emailpassword
    savepath = args.savepath
    print(IMAP_SERVER,IMAP_PORT,EMAIL_ADDRESS,EMAIL_PASSWORD,savepath)

    # # IMAP服务器的地址和端口
    # IMAP_SERVER = 'imap.126.com'  # 例如: 'imap.gmail.com'  
    # IMAP_PORT = 993  # 默认IMAP端口为993  
    # EMAIL_ADDRESS = '[email protected]'  # 你的邮箱地址  
    # EMAIL_PASSWORD = 'xxx'  # 你的邮箱密码

    # 创建 IMAP 连接
    imap_conn = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)

    # 登录邮箱账户
    imap_conn.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
    imap_id = ("name", "RPA robot", "version", "1.0.0", "vendor", "ins")
    typ, data = imap_conn.xatom('ID', '("' + '" "'.join(imap_id) + '")')
    print('conn:',imap_conn)
    # 选择邮箱文件夹(例如'INBOX')
    mailbox = "Trash"
    status,response = imap_conn.select('INBOX')
    print('status:',status)
    print('imap conn:',imap_conn)
    # 搜索最新一封邮件
    status, response = imap_conn.search(None, 'ALL')
    print('status:',status)
    latest_email_id = response[0].split()[-1]

    # 获取最新一封邮件的内容
    status, response = imap_conn.fetch(latest_email_id, '(RFC822)')
    raw_email = response[0][1]
    email_message = email.message_from_bytes(raw_email)

    # 解析邮件主题
    subject = decode_header(email_message['Subject'])[0][0]
    if isinstance(subject, bytes):
        subject = subject.decode('GBK')

    # 解析发件人
    sender = decode_header(email_message['From'])[0][0]
    if isinstance(sender, bytes):
        sender = sender.decode('GBK')

    print("主题:", subject)
    print("发件人:", sender)

    # 解析邮件正文
    for part in email_message.walk():
        content_type = part.get_content_type()
        print('type:',content_type[:40])
        print('-------------------')
        if content_type == 'text/plain' or content_type == 'text/html':
            charset = part.get_content_charset()
            email_content = part.get_payload(decode=True)
            if charset:
                email_content = email_content.decode(charset)
            print("邮件内容:", email_content)

        # 解析附件
        if content_type.startswith('application/vnd.openxmlformats-officedoc'):
            filename = part.get_filename()
            if filename:
                filename = decode_header(filename)[0][0]
                print(filename)
                if isinstance(filename, bytes):
                    filename = filename.decode('GBK')
                print("附件:", filename)
                part = part.get_payload(decode=True)  # 获取附件内容(解码为bytes)  
                with open(savepath+filename, 'wb') as file:  # 将附件内容写入文件  
                    file.write(part)  # 将附件内容写入文件

    imap_conn.logout()

问题 command SEARCH illegal in state AUTH, only allowed in states SELECTED

参考

添加身份信息

import imaplib
 
# 添加缺失的命令
imaplib.Commands['ID'] = ('AUTH')
 
conn = imaplib.IMAP4_SSL(port = '993',host = 'imap.163.com')
conn.login('[email protected]','HJKHSHDFIWRNKJHI')
 
# 上传客户端身份信息
args = ("name","XXXX","contact","[email protected]","version","1.0.0","vendor","myclient")
typ, dat = conn._simple_command('ID', '("' + '" "'.join(args) + '")')
print(conn._untagged_response(typ, dat, 'ID'))
 
status, msgs = conn.select()

标签:email,IMAP,126,print,邮箱,type,imap,conn
From: https://blog.51cto.com/u_15785525/9103327

相关文章

  • Vue 周报 #126 - 在Nuxt中处理客户端错误
    Hi......
  • Applescript实现无痕检测手机号或邮箱号是否注册iMessage服务,iMessage蓝号检测完美实
    一、检测数据的两种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2.编写脚本控制Macos/ipho......
  • Microsoft 365开发:如何使用Powershell将单个或者多个用户邮箱转换为共享邮箱
    51CTOBlog地址:https://blog.51cto.com/u_13969817Office365是一个基于云的平台,提供了一套生产力工具,包括电子邮件、日历和文件共享。随着员工数量的增加和团队合作的需要,企业管理员经常会将个人邮箱转换为共享邮箱,其好处是:·      共享邮箱可以方便团队成员之间的邮件交......
  • 邮箱群发邮件怎么发?邮件营销通道
    在数字化时代,电子邮件已经成为商业通信的一种主要方式。对于企业而言,通过邮箱群发邮件进行邮件营销已经成为一种高效而直接的推广手段。本文将深入探讨邮箱群发邮件的操作步骤和邮件营销通道,帮助您更好地利用这一工具拓展业务。1.选择合适的邮件群发工具首先,要想实现成功的邮箱群......
  • 邮箱群发邮件怎么发?邮件营销通道
    在数字化时代,电子邮件已经成为商业通信的一种主要方式。对于企业而言,通过邮箱群发邮件进行邮件营销已经成为一种高效而直接的推广手段。本文将深入探讨邮箱群发邮件的操作步骤和邮件营销通道,帮助您更好地利用这一工具拓展业务。1.选择合适的邮件群发工具首先,要想实现成功的邮箱群......
  • C++STL常用关联式关联容器(set/multiset , map/multimap)
    2.1set/multiset容器2.1.1set基本概念简介:所有元素都会在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是用二叉树实现。set和multiset区别:set不允许容器中有重复的元素multiset允许容器中有重复的元素2.1.2set构造和赋值功能描述:创建set容器以及赋值构造:set<T>st......
  • AI智能分析平台/可视化监控云平台EasyCVR邮箱验证功能的实现操作
    视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等,视频智能分析平台EasyCVR融合性强、开放度高、部署轻快,在智慧工地、智慧园区、智慧......
  • AI智能分析平台/可视化监控云平台EasyCVR邮箱验证功能的实现操作
    视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等,视频智能分析平台EasyCVR融合性强、开放度高、部署轻快,在智慧工地、智慧园区、智慧......
  • qq邮箱怎么群|发?3个技巧教你高送达发信
    在如今信息爆炸的时代,电子邮件成为人们沟通、交流的重要工具之一。而qq邮箱作为其中的一员,被广泛应用于个人和商务场景。对于许多人来说,qq邮箱怎么群发成了一个备受关注的问题。本文将为您介绍三个技巧,帮助您在使用qq邮箱进行群发时提高发信的高送达率。1.精准筛选收件人群体qq邮......
  • 软件多开助手的便捷之道:管理多个邮箱账号
    软件多开助手:管理多个邮箱账号的便捷之道导语:在现代社会中,我们越来越依赖电子邮件来进行工作和沟通。然而,对于那些需要同时管理多个邮箱账号的人来说,这可能成为一项繁琐的任务。本文将介绍一种便捷的方法,即使用软件多开助手来管理多个邮箱账号,提高工作效率,使我们能够更好地处理邮......