Cloudflare Email Worker自动回复邮件无正文问题求助
Cloudflare Email Worker自动回复正文为空的解决方案
问题分析
你的代码能正常发送邮件、主题和收发件人信息正确,但正文始终为空,核心原因是手动构造MIME消息时的格式问题,或对message.reply()方法的用法有误。
解决方案1:使用message.reply()简化参数(推荐)
无需依赖mimetext,直接通过reply()的参数指定内容,Cloudflare会自动处理MIME封装,避免格式错误:
import { EmailMessage } from "cloudflare:email"; export default { async email(message, env, ctx) { await message.reply({ sender: { name: "Me", addr: "email@email.com" }, subject: "Auto-reply", headers: { "In-Reply-To": message.headers.get("Message-ID") }, text: "This is an auto-reply", // 纯文本版本 html: "This is an <b>auto-reply</b>" // HTML版本 }); } }
解决方案2:修正mimetext用法
如果坚持使用mimetext,需确保生成完整的MIME结构,且直接将raw内容传给reply(),无需额外封装EmailMessage:
import { createMimeMessage } from "mimetext"; export default { async email(message, env, ctx) { const msg = createMimeMessage(); msg.setHeader("In-Reply-To", message.headers.get("Message-ID")); msg.setSender({ name: "Me", addr: "email@email.com" }); msg.setRecipient(message.from); msg.setSubject("Auto-reply"); // 同时添加纯文本和HTML版本,兼容不同邮件客户端 msg.addMessage({ contentType: 'text/plain', data: "This is an auto-reply" }); msg.addMessage({ contentType: 'text/html', data: "This is an <b>auto-reply</b>" }); // 直接传入MIME raw内容,无需构造EmailMessage await message.reply(msg.asRaw()); } }
错误用法说明
你之前尝试的replyMessage.message = {...}是无效的,EmailMessage实例没有该可写属性,无法通过这种方式设置正文内容。
内容的提问来源于stack exchange,提问作者Mike Simmons
相关产品推荐
相关产品推荐

