知识就是力量——mode-red使用qq邮箱

识就是力量------mode-red使用qq邮箱

添加QQ邮箱发送功能到您的Node-RED流程中。

以下是完整的流程配置,包含了QQ邮箱发送功能:

json 复制代码
[
    {
        "id": "inject-node",
        "type": "inject",
        "name": "定时触发器",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "3600",
        "crontab": "",
        "once": true,
        "onceDelay": "1",
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 100,
        "y": 100,
        "wires": [
            ["http-request-node"]
        ]
    },
    {
        "id": "http-request-node",
        "type": "http request",
        "name": "获取天气数据",
        "method": "GET",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "http://api.openweathermap.org/data/2.5/weather?q=Anhui,CN&appid=108e304a55942ac32751b79764d0e4c&units=metric&lang=zh_cn",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 280,
        "y": 100,
        "wires": [
            ["function-node"]
        ]
    },
    {
        "id": "function-node",
        "type": "function",
        "name": "处理天气数据",
        "func": "// 处理天气数据\nif (msg.statusCode === 200) {\n    var data = msg.payload;\n    \n    // 构建通知消息\n    msg.payload = {\n        title: `安徽天气报告 - ${new Date().toLocaleString()}`,\n        message: `城市: ${data.name}\\n天气: ${data.weather[0].description}\\n温度: ${data.main.temp}°C\\n体感温度: ${data.main.feels_like}°C\\n最高温度: ${data.main.temp_max}°C\\n最低温度: ${data.main.temp_min}°C\\n湿度: ${data.main.humidity}%\\n气压: ${data.main.pressure} hPa\\n风速: ${data.wind.speed} m/s\\n能见度: ${data.visibility/1000} km`\n    };\n    \n    // 构建邮件内容\n    msg.email = {\n        subject: `安徽天气报告 - ${new Date().toLocaleString()}`,\n        html: `<h2>安徽天气报告</h2>\n               <p><strong>更新时间:</strong> ${new Date().toLocaleString()}</p>\n               <p><strong>城市:</strong> ${data.name}</p>\n               <p><strong>天气状况:</strong> ${data.weather[0].description}</p>\n               <p><strong>当前温度:</strong> ${data.main.temp}°C</p>\n               <p><strong>体感温度:</strong> ${data.main.feels_like}°C</p>\n               <p><strong>最高温度:</strong> ${data.main.temp_max}°C</p>\n               <p><strong>最低温度:</strong> ${data.main.temp_min}°C</p>\n               <p><strong>湿度:</strong> ${data.main.humidity}%</p>\n               <p><strong>气压:</strong> ${data.main.pressure} hPa</p>\n               <p><strong>风速:</strong> ${data.wind.speed} m/s</p>\n               <p><strong>能见度:</strong> ${data.visibility/1000} km</p>\n               <hr>\n               <p><small>此邮件由Node-RED天气监控系统自动发送</small></p>`\n    };\n    \n    // 保留原始数据用于调试\n    msg.weatherData = data;\n    \n    return msg;\n} else {\n    msg.payload = `获取天气数据失败: ${msg.statusCode}`;\n    msg.email = {\n        subject: \"天气数据获取失败\",\n        html: `<p>获取天气数据失败,错误代码: ${msg.statusCode}</p>`\n    };\n    return msg;\n}",
        "outputs": 1,
        "timeout": "",
        "x": 480,
        "y": 100,
        "wires": [
            ["debug-node", "email-node"]
        ]
    },
    {
        "id": "debug-node",
        "type": "debug",
        "name": "显示结果",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 680,
        "y": 100,
        "wires": []
    },
    {
        "id": "email-node",
        "type": "e-mail",
        "name": "发送QQ邮件",
        "server": "smtp.qq.com",
        "port": "587",
        "secure": false,
        "tls": true,
        "namex": "",
        "dname": "",
        "x": 680,
        "y": 160,
        "wires": [
            ["email-debug-node"]
        ]
    },
    {
        "id": "email-debug-node",
        "type": "debug",
        "name": "邮件发送状态",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 860,
        "y": 160,
        "wires": []
    }
]

配置QQ邮箱的步骤:

  1. 首先需要配置email节点:

    • 双击"发送QQ邮件"节点
    • 在"服务器"字段输入:smtp.qq.com
    • 端口:587
    • 勾选"TLS"
    • 不勾选"SSL"
  2. 设置QQ邮箱认证:

    • 用户名:您的QQ邮箱地址(完整地址,如:123456789@qq.com)
    • 密码:不是QQ密码,而是QQ邮箱的授权码
  3. 获取QQ邮箱授权码:

    • 登录QQ邮箱网页版
    • 进入"设置" → "账户"
    • 找到"POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务"
    • 开启"POP3/SMTP服务"
    • 按照提示获取16位授权码
  4. 设置收件人:

    • 在email节点的"收件人"字段填入您要接收邮件的邮箱地址
    • 可以设置多个收件人,用逗号分隔
  5. 邮件主题和内容:

    • 主题:{``{email.subject}}
    • 内容选择"使用消息属性":email.html

重要提醒:

  • 授权码不是QQ密码,必须通过QQ邮箱设置页面获取
  • 确保您的QQ邮箱已开启SMTP服务
  • 建议先测试发送一封邮件确认配置正确
  • 邮件节点会自动使用处理天气数据函数中设置的msg.email对象

配置完成后,每当定时触发器启动,系统就会获取天气数据并通过QQ邮箱发送给您。