通过 SQL 直接写入营销邮件表,由定时任务扫描 status=-1 且 delay_send_time <= NOW() 的记录并 SMTP 发送。
若 is_track=1,发送前会自动补 track_token 并注入打开追踪像素。
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:收件人
'<html><body><p>你好</p></body></html>', -- 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 | 发送成功后系统回写 |
is_delete = 0
AND status = -1
AND delay_send_time IS NOT NULL
AND delay_send_time <= NOW()