开发信最容易出的问题,通常不是英文不够漂亮,而是把没确认的交期、认证、运费或性能写成了事实。稳妥的做法是先整理一张可核对的事实卡,再让模型按场景起草,最后逐句对照事实卡和收件人的原话。

本文在本机 Ollama / Qwen3.8-27B 上,用一组完全虚构的茶滤产品资料跑了三种场景:初次联系、买家询问规格、买家要求退订。没有连接邮箱、查找真实买家或发送邮件。原始模型输出、第一轮问题、改过提示后的第二轮结果,以及人工校订稿都放在练习包中。

1. 先写事实卡,再写邮件

练习包的 input/product-facts.json 列出卖方、买方和商品已知信息,并把缺项单独放进 not_provided。本例只使用以下虚构资料:

字段 已知事实
产品 ZK-04 不锈钢茶滤套装,304 不锈钢;含茶滤、滴水托盘和收纳盒
包装数量 每套净重 180 克;每箱 48 套
报价 每套 USD 4.80,EXW 宁波;MOQ 240 套
样品 标示价格 USD 7;报价单位/口径未说明;运费由买家另付,金额未知
未提供 生产交期、库存、目的地运费与到货日、食品接触测试或认证、颜色定制、保修和客户案例

真实业务中,先从已经确认的报价单、产品规格表和公司政策填事实卡。贸易术语要和报价依据、指定地点及当前版本一致;单位、币种、MOQ、样品费和运费分别核对。资料缺失就写“待内部确认”,不要让模型用常识补齐。

2. 在本机生成三种草稿

练习包的 generate_outreach.py 通过 Ollama Chat API 请求结构化 JSON,并把提示词、模型原文、解析结果、耗时和 token 计数保存到 output/model-run.json。先确保本机已经有模型并且 Ollama 正在运行:

ollama list
python3 generate_outreach.py --self-check
python3 generate_outreach.py --run

默认调用 qwen3.8-27b:latest,地址限定在 127.0.0.1。脚本不读取通讯录、不连接邮箱,也没有发送功能。运行后先打开原始结果,不要把 JSON 校验通过误当成内容已验收。

本次测试在 M1 Max 64GB、Ollama 0.35.1 和 Qwen3.8-27B 上运行。第一轮三种场景共 98.3 秒,输入/输出 1,345/927 tokens;发现初次联系稿暗示已了解买家、声称样品可提供,还建议直接发送。增加提示约束后第二轮共 75.2 秒,输入/输出 1,510/866 tokens;模型不再暗示调查过买家,但仍将“样品报价”扩写成“样品可提供”,询价回复也漏列样品运费缺项。原始两轮结果都保留。人工复核时,逐项比对 facts_used,再检查 unknowns 是否涵盖所有被问到但没有提供的资料;最终只使用练习包 output/approved-drafts.json 中人工修订的版本。

3. 冷开发信:说清来意,不编关系

初次联系邮件应让收件人知道写信人是谁、为什么联系、提供什么下一步选择。不能暗示见过面、收到过询价或看过对方的非公开资料。对方业务背景也要有可核实来源;本例的买家和公司都是虚构角色,只是练习卡设定,不是公开调查结果。

检查草稿:

  1. 主题与正文一致,不写虚假的 Re: 或“最后通知”。
  2. 公司名、产品名和已确认规格与事实卡完全一致。
  3. 只提出一个低压力、可拒绝的下一步,例如询问是否愿意查看规格表。
  4. 删除没有证据的“行业领先”“畅销”“环保”“耐用”或效果承诺。
  5. 核对发件人身份和适用市场所需的退订信息;确认规则后再考虑发送。

4. 询价回复:逐条答,未知项明确待核

练习中的买家询问 MOQ、样品价、每箱数量、可用认证,以及发往温哥华的预计到货日期。前三项可以从事实卡回答;认证情况和目的地到货日没有提供,草稿必须说明需要内部确认,不能把“暂无资料”改写成肯定答案。

回复前可用这张核对表:

买家问题 本例可写的内容 发送前要补的核对
MOQ 240 套 确认报价有效期和适用型号
样品价格 标示 USD 7,报价单位/口径未提供 确认报价适用单位、样品是否可提供、样品运费、支付方式和可寄送地区
箱规 每箱 48 套 确认外箱尺寸、毛重和装箱方式是否可提供
认证 事实卡未提供 向质量/供应链负责人确认,避免写“有”或“符合”
温哥华到货日期 事实卡未提供 先确认生产交期、运输方案、费用和清关边界

人工修订后的回复片段如下。它没有猜证书或到货日期,也没有承诺某天跟进:

Subject: Re: ZK-04 Stainless Steel Tea Filter Set

Dear Alex,

The minimum order quantity is 240 sets, and each carton contains 48 sets.
The fact card lists a sample price of USD 7, but does not specify the quote basis.
Sample freight is payable by the buyer; the amount has not been provided.

We do not yet have confirmed information about certificates or the estimated
arrival date to Vancouver, so I cannot provide those details in this reply.

这是虚构练习中的正文片段,不是完整可发送邮件。实际营销邮件还需按适用规则补齐发件身份、广告识别、有效邮寄地址和退订方式,并由业务人员完成内部确认。

EXW 报价不应被改写成含目的地运费或送达承诺。若报价、库存或交期在正式回复前发生变化,重新核对,不要沿用旧事实卡。

5. 退订请求:停止营销并留下记录

买家说“请从营销名单中删除,不要再联系”时,回复应简短确认,不追加产品介绍、折扣或“最后一个问题”。同时按组织流程记录拒联状态,并让后续活动使用抑制名单,避免重新导入后再次触达。任何法定或交易必需通知的处理,要按适用规则另行确认,不能借此继续发送营销内容。

6. 先核规则,再发送

邮件营销要求会随收件人类型、地区、数据来源和用途变化,不能把一国规则当作全球清单。美国 FTC 指南说明 CAN-SPAM 也涵盖 B2B 商业邮件,并列出真实发件信息与主题、广告识别、邮寄地址、退订方式及及时处理退订等要求。查看 FTC 指南

英国 ICO 的说明区分公司订阅者与个体经营者等类别;即使是工作邮箱,联系人信息仍可能涉及个人数据。该 B2B 指引目前标注因《Data (Use and Access) Act》而复核中,可能变化;发送前应根据收件人类别、数据来源和具体用途核对 PECR 与 UK GDPR 义务,并尊重反对营销的请求。查看 ICO 的 B2B 营销说明 · 查看 ICO 电子邮件营销指南

发送前最终检查

检查项 确认内容
身份 发件人、公司和收件人信息真实,联系来源符合内部流程
事实 价格、币种、术语地点、MOQ、包装、样品与运费都已复核
未知项 认证、交期、库存、目的地费用等均已确认或仍明确待确认
内容 无虚假关系、未经证实的性能/环保比较或误导性主题
发送规则 按目标市场、收件人类别和数据来源检查同意、身份、地址及退订要求
拒联 退订已记录,营销名单及后续触达流程已同步抑制

这次本机测试只验证了虚构资料下的草稿生成流程,不证明真实商品信息、收件人名单、英文语气或具体营销活动合法。由业务人员逐项核对并取得必要批准后,才可通过公司认可的邮件系统另行发送。