跳转到内容

电子邮件

从你的应用发送事务性邮件。在应用的 Admin > Email 中管理发件人身份并跟踪送达情况。

每个 Proyecta 应用都可以发送事务性邮件。验证发件人身份后,即可在应用代码中直接发送——无需单独注册邮件服务商账户。

在 builder 中打开 Admin > Email,或访问已发布站点的 /admin。该模块分为两部分:

部分 用途
Identities 添加并验证发件人邮箱地址或域名
Sent 浏览已发送的邮件及送达状态(已发送、已送达、退信等)

你可以添加新的发件人身份、浏览邮件送达历史——全程无需编写代码。

  1. 在管理面板中创建并验证发件人身份(邮箱地址或域名)
  2. 发送——在应用中使用 useSendEmail(),或在管理面板中用于营销邮件

使用共享地址发送(@proyectamail.com

Section titled “使用共享地址发送(@proyectamail.com)”

最简单的方式是在 Proyecta 的共享发送域名 @proyectamail.com 上申请一个地址。创建后立即完成验证——平台本身拥有该域名,因此无需你配置任何 DNS 记录。

在应用管理面板的 Emails 模块中输入你想要的地址,即刻可用。

单个地址仅适用于 @proyectamail.com。若申请其他域名下的地址(例如 hello@myapp.com)将被拒绝——如需从自有域名发送,请改为验证整个域名(见下文)。每个共享地址在全局范围内唯一保留,不同应用不能使用同一个 @proyectamail.com 发件人。

如需从自有域名发送——使用该域名下的任意地址(hello@support@noreply@ 等)——请验证整个域名。与共享的 @proyectamail.com 地址不同,自定义域名不会即时完成验证。

在同一个 Emails 模块中添加域名,系统会向邮件服务商注册,并展示需要在 DNS 中发布的 SPF、DKIM 和 DMARC 记录。发件人状态将保持 pending,直到这些记录完成传播并由服务商确认后,状态才会切换为 verified——发布记录后请点击重新检查按钮。

基于 DNS 的域名验证功能已完整实现——记录由服务商生成,每次重新检查都会重新轮询其状态。

底层实现: Proyecta 通过其邮件身份服务商(Resend)验证你的发送域名,并通过事务性邮件服务商(SendGrid)投递消息。你无需管理上述任何一家的账户。

在应用页面中,使用 useSendEmail() hook 发送邮件。你选择一个模板并传入变量,平台会以应用的语言渲染消息并发送:

import { useSendEmail } from '@/hooks/useEmail.ts';
function ConfirmButton({ booking }) {
const { send, isPending, error } = useSendEmail();
return (
<button
disabled={isPending}
onClick={() =>
send({
template: 'booking_confirmation',
variables: { date: booking.date, service: booking.service },
})
}
>
Email me the details
</button>
);
}

注意你不需要传入的内容:收件人、主题或 HTML。每个模板自行声明其受众:

  • self(预订/订单确认、欢迎邮件)→ 发送到已登录用户自己的邮箱地址,从其会话中获取。
  • ownerowner_alert)→ 发送给应用的管理员。

两者都需要已登录的会话。这是有意为之,而非功能缺失:用于验证请求的 publishable key 会随页面源码一同下发,若允许指定任意收件人,任何人都可以利用你的应用进行垃圾邮件中继。如需在匿名访客触发时通知自己,请使用表单——表单提交会自动向站长发送邮件并向提交者发送确认,且该路径无法在浏览器端伪造。

错误以 PlatformApiError 的形式返回:401(需要登录会话)、403(该模板未在此应用中启用)、429(请求频率受限——展示提示信息并提供重试选项)、422(未找到邮箱地址)。

管理面板中的 Sent 标签页列出了应用发送的所有邮件及其最新送达事件——已送达、已打开、已点击、退信、投诉——通常无需编写任何代码即可查看。

每条记录都带有状态——sentdeliveredopenedclickedbouncedcomplained——你可以打开任意一条消息查看实际发出的 HTML 和纯文本内容。如果邮件送达出现问题,这里是排查的第一站。

你不必手动编写这些内容,直接告诉 AI 即可:

  • "Verify hello@myapp.com as a sending identity."
  • "Email the customer a confirmation after they finish booking."
  • "After a successful checkout, send the customer their receipt."
  • "Show me the last 20 emails we've sent and whether they bounced."
  • from 地址必须是已验证的身份。 使用未验证的地址发送将返回错误。
  • 每月发送量有限制,具体取决于你的 Proyecta 套餐。
  • 模板编辑器 —— 在 builder 中可视化设计事务性邮件模板
  • 批量发送 endpoint,用于大规模邮件群发