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

如何将Python自定义函数的运行输出作为邮件内容发送

核心原因

你的content函数当前仅将结果直接打印到控制台,没有返回可被其他函数调用的结构化内容,因此直接调用无法拿到输出内容。

最优实现方案(推荐)

1. 修改content函数,返回筛选结果

将原本直接打印的内容存入列表,最后拼接为字符串返回,保留原有打印逻辑不影响调试:

def content():
    res_list = []
    for d3 in d1:
        if (x or y or k or w or f) and date in d3.text.upper().lower():
            res_list.append(d3.text)
            res_list.append(d3.attrs['href'])
            # 保留原有打印用于控制台调试
            print(d3.text)
            print(d3.attrs['href'])
    # 用换行符拼接所有内容返回
    return '\n'.join(res_list)

2. 修改send_mail函数,支持传入自定义内容

建议使用email模块构造标准邮件格式,避免被邮箱判定为垃圾邮件:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

def send_mail(mail_content):
    sender_mail="*****@gmail.com"
    receiver_mail="*****@gmail.com"
    # Gmail需开启两步验证后生成应用专用密码,不可直接使用账号登录密码
    password="*******"
    
    # 构造纯文本邮件内容
    msg = MIMEText(mail_content, 'plain', 'utf-8')
    msg['From'] = Header("网页筛选工具", 'utf-8')
    msg['To'] = Header("收件人", 'utf-8')
    msg['Subject'] = Header("网页筛选结果通知", 'utf-8')

    server = smtplib.SMTP("smtp.gmail.com", 587)
    server.starttls()
    server.login(sender_mail, password)
    print("login success")
    server.sendmail(sender_mail, receiver_mail, msg.as_string())
    print("email sent")
    server.quit()

3. 调用示例

if __name__ == "__main__":
    # 获取筛选结果
    filter_content = content()
    # 仅当有符合条件的内容时发送邮件
    if filter_content.strip():
        send_mail(filter_content)
    else:
        print("本次无符合筛选条件的内容,无需发送邮件")

备用方案(无需修改原有content函数)

如果不想改动原有content的打印逻辑,可以临时捕获标准输出流获取打印内容,该方式可读性较差,仅作为临时替代方案:

import io
import sys

def capture_content_output():
    original_stdout = sys.stdout
    output_buffer = io.StringIO()
    sys.stdout = output_buffer
    # 调用原函数,所有打印内容会被捕获到缓冲区
    content()
    # 恢复原有标准输出
    sys.stdout = original_stdout
    return output_buffer.getvalue()

调用时将capture_content_output()的返回值传入send_mail即可。

内容的提问来源于stack exchange,提问作者Bruno K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:57:00