Cloudflare 一直有个域名邮箱功能,无法发送邮件,但是可以无限前缀转发到自己邮箱。
现在它的域名邮箱功能,开始支持 worker 了,worker 可以通过新邮件到达触发。
这样就可以做到,使用 worker 发送通知,不需要手机一直开着邮箱 APP 接收邮件了。
不喜欢 APP 一直在后台,不只是耗电,也很担心隐私的问题。
Worker 可以获取新邮件的发送人和内容,我只想要通知,然后使用 outlook 客户端查看邮件。
其实因为有 worker ,不只是简单的邮件通知,还可以玩很多的东西,毕竟一封邮件就可以触发了。
export default {
async email(message, env, ctx) {
// 获取原始发件人邮箱
let originalSender = '';
const fromHeader = message.headers.get("From");
if (fromHeader) {
// 使用正则表达式提取邮箱地址
const match = fromHeader.match(/<([^>]+)>/);
originalSender = match ? match[1] : fromHeader.trim();
}
// 如果没有找到发件人,尝试从其他头部获取
if (!originalSender) {
const senderHeader = message.headers.get("Sender");
if (senderHeader) {
const match = senderHeader.match(/<([^>]+)>/);
originalSender = match ? match[1] : senderHeader.trim();
}
}
// 如果仍然没有找到,使用一个默认值
if (!originalSender) {
originalSender = "未知发件人";
}
// 获取邮件主题
const subject = message.headers.get("Subject") || "无主题";
// 发送企业微信消息
const wechatWebhookUrl = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='
const wechatMessage = {
msgtype: 'text',
text: {
content: `收到一封新邮件!\n发件人: ${originalSender}`
}
}
// 将消息发送到企业微信机器人
const response = await fetch(wechatWebhookUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(wechatMessage)
})
// 返回响应
if (response.ok) {
return new Response('微信消息发送成功', { status: 200 })
} else {
return new Response('微信消息发送失败', { status: 500 })
}
}
}