You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中使用IMAP_tools获取Gmail及其他邮箱的星标邮件

获取Gmail星标邮件的正确方法

你的代码存在两个核心问题:IMAP服务器地址错误,且没有筛选星标邮件的条件,以下是修正方案:

1. 修正IMAP服务器地址

Gmail的IMAP收件服务器是imap.gmail.com,而非你代码中使用的SMTP发件服务器smtp.gmail.com。

2. 添加星标邮件筛选逻辑

使用imap_tools的A.flagged()筛选器,即可只获取带星标(FLAGGED标记)的邮件。

3. 注意Gmail权限配置

  • 前往Gmail设置的「转发和POP/IMAP」页面,启用IMAP功能;
  • 若你的账号开启了两步验证,必须使用应用专用密码登录,不能用原账号密码。

修正后的完整代码:

from imap_tools import MailBox, A
from django.http import HttpResponse

def temp(request):
    # 替换为你的邮箱和应用密码/原密码
    with MailBox('imap.gmail.com').login('admin@gmail.com', 'your_password_here', 'INBOX') as mailbox:
        star_messages = []
        # 仅获取带星标的邮件
        for msg in mailbox.fetch(A.flagged()):
            star_messages.append((msg.date, msg.subject, msg.html))
        
        # 如果没有星标邮件,返回默认值,否则返回最后一封或全部(根据需求调整)
        temp = star_messages[-1] if star_messages else "empty"
    
    return HttpResponse(temp)

说明:

  • 原代码中temp会被循环覆盖,最终只保留最后一封邮件的数据,建议用列表star_messages存储所有星标邮件;
  • A.flagged()是imap_tools内置的筛选规则,精准匹配星标邮件。

内容的提问来源于stack exchange,提问作者Sneha Makwana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:50:26