在 python 中仅提取电子邮件标头

要在 Python 中仅提取电子邮件的标头信息,我们可以使用 `email` 库来解析电子邮件内容。下面是一个简单的示例代码,展示了如何从电子邮件文本中提取出主题和发件人。

首先,确保你的环境中已经安装了 `email` 库,如果没有安装,可以通过 pip 安装:

```bash
pip install email
```

接下来是代码示例:

```python
import email

def extract_email_headers(raw_email):
    # 解析邮件内容
    message = email.message_from_string(raw_email)
    
    # 提取标头信息
    subject = message['Subject']  # 主题
    sender = message['From']     # 发件人
    
    return {
        'subject': subject,
        'sender': sender,
    }

# 示例电子邮件文本(请注意,这只是一个示例,实际邮件内容会更复杂)
raw_email = """
Subject: 项目报告提交截止日期提醒
From: John Doe <john.doe@example.com>
To: Jane Smith <jane.smith@example.com>
Date: 2024-02-28
"""

# 调用函数提取标头信息
headers = extract_email_headers(raw_email)

print("主题:", headers['subject'])
print("发件人:", headers['sender'])
```

在这个示例中,我们首先导入了 `email` 库的 `message_from_string` 函数。然后,我们定义了一个名为 `extract_email_headers` 的函数,它接受一个字符串参数(即电子邮件的原始文本)。在函数内部,我们使用 `email.message_from_string()` 解析这个字符串,得到一个 `Message` 对象。

接下来,我们通过调用 `message['Subject']` 和 `message['From']` 来提取邮件的主题和发件人信息。最后,我们返回一个包含这两个标头信息的字典。

请注意,在实际应用中,你可能需要处理更复杂的情况,比如从电子邮件地址中提取用户名、域名等详细信息,或者从多部分邮件中提取所有标头信息。上述示例仅展示了如何从基本的电子邮件文本中提取主题和发件人。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个可以实时获取 QQ 邮箱邮件题和正文的 Python 代码示例,用于生成微信机器人: ```python import itchat import poplib from email.parser import Parser # 登录微信账号 itchat.auto_login(hotReload=True) # 邮箱登录信息 email = 'your_qq_email@qq.com' password = 'your_email_password' pop3_server = 'pop.qq.com' # 连接到 QQ 邮箱服务器 server = poplib.POP3(pop3_server) server.user(email) server.pass_(password) # 定义一个函数,用于获取新邮件信息 def get_new_mails(): # 获取邮件总数 resp, mails, octets = server.list() total_mails = len(mails) # 循环读取每一封未读邮件 for i in range(total_mails): resp, lines, octets = server.retr(i+1) msg_content = b'\r\n'.join(lines).decode('utf-8') msg = Parser().parsestr(msg_content) # 如果邮件未读,就提取邮件信息 if 'UNSEEN' in resp.decode('utf-8'): subject = msg.get('Subject') sender = msg.get('From') date = msg.get('Date') content = '' # 如果邮件包含文本信息,就提取出来 if msg.is_multipart(): parts = msg.get_payload() for part in parts: charset = part.get_charset() if charset is None: content += part.get_payload(decode=True).decode('utf-8', 'ignore') else: content += part.get_payload(decode=True).decode(charset, 'ignore') else: charset = msg.get_charset() if charset is None: content = msg.get_payload(decode=True).decode('utf-8', 'ignore') else: content = msg.get_payload(decode=True).decode(charset, 'ignore') # 返回新邮件信息 yield (subject, sender, date, content) # 定义一个函数,用于发送微信消息 def send_wechat_msg(msg): itchat.send(msg, toUserName='filehelper') # 每隔一定时间获取新邮件信息,并发送微信消息 while True: new_mails = get_new_mails() for mail in new_mails: msg = 'New email:\nSubject: %s\nFrom: %s\nDate: %s\nContent: %s' % mail send_wechat_msg(msg) time.sleep(300) # 每隔 5 分钟检查一次新邮件 # 退出邮箱服务器连接 server.quit() ``` 在上面的代码,我们定义了一个 `get_new_mails` 函数,用于获取新邮件信息。这个函数会循环读取每一封未读邮件,并提取邮件的主题、发件人、日期和正文等信息。然后我们定义了一个 `send_wechat_msg` 函数,用于发送微信消息。最后,我们使用一个循环来每隔一定时间检查新邮件,并发送微信消息通知用户。这个示例代码每隔 5 分钟检查一次新邮件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值