# mkt_mail_message SQL 插入说明(定时发送) 通过 SQL 直接写入营销邮件表,由定时任务扫描 `status=-1` 且 `delay_send_time <= NOW()` 的记录并 SMTP 发送。 若 `is_track=1`,发送前会自动补 `track_token` 并注入打开追踪像素。 --- ## 案例 ```sql INSERT INTO mkt_mail_message ( account_id, subject, from_addr, from_name, recipient, content, folder, in_out_mark, status, delay_send_time, is_track, owner_by, create_by, create_time, update_time, is_delete, enabled ) VALUES ( 1001, -- account_id:MKT 发信账户 ID '促销活动', -- subject:主题 'mkt@example.com', -- from_addr:发件人邮箱 '营销号', -- from_name:发件人显示名 'user@example.com', -- recipient:收件人 '

你好

', -- content:HTML 正文 'SENTING', -- folder:发件中 2, -- in_out_mark:发件 -1, -- status:待定时发送(必填 -1) '2026-08-14 12:00:00', -- delay_send_time:定时发送时间 1, -- is_track:开启打开追踪 1, -- owner_by:归属人 1, -- create_by:创建人 NOW(), -- create_time NOW(), -- update_time 0, -- is_delete:未删除 1 -- enabled:启用 ); ``` 说明: - `account_id=1001` 需在 `smtp_pop_settings` 中存在,且 `scene=MKT`、可用。 - 到点后任务会把 `status` 改为 `0`(发送中),成功为 `1`,失败为 `2`。 - `track_token` 本例未写;发送时若 `is_track=1` 且无 token,系统自动生成并注入像素。 - 需配置 `storlead.mail.track-base-url`(公网可访问,含 context-path)。 --- ## 字段说明(本案例涉及) | 字段 | 类型 | 必填 | 本例值 | 说明 | |------|------|------|--------|------| | account_id | bigint | 是 | 1001 | 发信账户 ID,对应 `smtp_pop_settings.id`,账户须为营销场景(scene=MKT) | | subject | varchar(512) | 业务必填 | 促销活动 | 邮件主题 | | from_addr | varchar(255) | 建议填 | mkt@example.com | 发件人邮箱,一般与账户邮箱一致;SMTP 实际 From 以账户为准 | | from_name | varchar(255) | 建议填 | 营销号 | 发件人显示名 | | recipient | varchar(512) | 是 | user@example.com | 收件人邮箱;一收件人一行 | | content | mediumtext | 业务必填 | HTML | 邮件正文;追踪像素在真正发送时注入,不必手写进 content | | folder | varchar(32) | 建议填 | SENTING | 文件夹:定时/发送中用 `SENTING`;成功后可能变为 `SENT` | | in_out_mark | tinyint | 建议填 | 2 | 进出标记:`1`=收件,`2`=发件 | | status | tinyint | 是(定时) | -1 | 投递状态:`-2`草稿,`-1`待定时,`0`发送中,`1`成功,`2`失败。走定时任务必须写 `-1`(表默认是 `0`,不会被扫描) | | delay_send_time | datetime | 是(定时) | 2026-08-14 12:00:00 | 定时发送时间;任务条件为 `delay_send_time <= NOW()` | | is_track | tinyint | 追踪时必填 | 1 | 是否打开追踪:`0`否,`1`是。为 `1` 时发送前会补 token 并注入像素 | | owner_by | bigint | 建议填 | 1 | 数据归属人用户 ID | | create_by | bigint | 建议填 | 1 | 创建人用户 ID | | create_time | datetime | 建议填 | NOW() | 创建时间 | | update_time | datetime | 建议填 | NOW() | 更新时间 | | is_delete | tinyint | 是 | 0 | 逻辑删除:`0`未删,`1`已删。任务只处理 `0` | | enabled | tinyint | 建议填 | 1 | 是否启用:`1`启用,`0`禁用;默认 `1` | --- ## 本案例未写、但相关的字段 | 字段 | 默认/处理 | 说明 | |------|-----------|------| | id | 自增 | 主键,勿手填 | | track_token | null → 发送时自动生成 | `is_track=1` 时可空;唯一索引 | | biz_ref | null | 业务单号,便于按活动回查 / open_stats | | biz_batch_no | null | 批次号 | | org_id | null | 组织 ID | | message_id | null | SMTP 成功后系统回写 | | opened / open_count | 0 | 打开态,插库保持默认 | | sent_time | null | 发送成功后系统回写 | --- ## 定时任务扫描条件(对照) ```text is_delete = 0 AND status = -1 AND delay_send_time IS NOT NULL AND delay_send_time <= NOW() ```