Skip to content

FAQ

Note

If you don't find a solution here, please search or ask in Github Issues, or ask in the Telegram group.

General

IssueSolution
Sending emails to authenticated forwarding addresses using Cloudflare WorkersUse CF's API for sending, only supports recipient addresses bound to CF, i.e., CF EMAIL forwarding destination addresses
Binding multiple domainsEach domain needs to configure email forwarding to worker
Subdomain cannot receive emailSubdomains must have Email Routing enabled separately on Cloudflare with their own DNS records and Catch-all rule. Enabling it only on the apex domain does NOT cover subdomains. See Email Routing
Recreating a previously used mailbox shows that the address already existsThe address may have been recreated or bound by another user after it expired or was unbound, so a normal user cannot reclaim it directly. If you have admin access, find the address in the admin address list, get its address credential, and then bind it to the target user again
IssueSolution
Uncaught Error: No such module "path". imported from "worker.js"Reference
No such module "node:stream". imported from "worker.js"Reference
Subdomain cannot send emailsReference
Failed to send verify code: No balanceSet unlimited emails in admin console or increase quota on the sending permission page
GitHub OAuth unable to get email / [400]: Failed to get user email from OAuth2 providerThe GitHub template reads the email field from https://api.github.com/user. If the GitHub account hides its public email, this field is null. Select a Public email in the GitHub profile, or change User Info URL to https://api.github.com/user/emails, User Email Key to $[?(@.primary==true)].email, and Scope to user:email
Cannot read properties of undefined (reading 'map') during page initializationFirst check whether /open_api/settings is returning valid data. In a direct Worker deployment, this usually means Worker variables were not configured correctly, so verify JSON-format variables such as DOMAINS and ADMIN_PASSWORDS. If this happens in a Pages deployment because requests are going to the wrong backend address, continue with the Pages troubleshooting section below
Worker backend opens as OK, but every frontend request shows Network ErrorFirst open the frontend in an incognito window to rule out a cached old frontend bundle. Then make sure Cloudflare security modes such as Under Attack, Bot Fight, or Managed Challenge are not applied to the API domain; those browser challenges block XHR/API requests and surface as Network Error
Mail suddenly stops arriving, deleting a few mails makes it work again, and Worker logs show D1_ERROR: Exceeded maximum DB sizeThe D1 database has reached its per-database size limit and can no longer write raw_mails. Delete old mails, enable auto cleanup in the admin console, and make sure the Worker has a Settings -> Trigger Events -> Cron Triggers schedule; otherwise admin cleanup settings will not run automatically
IssueSolution
Network ErrorFirst use incognito mode or clear browser cache and DNS cache; then inspect the failed request URL, status code, and response body in the browser DevTools Network panel
Pages deployment shows the map error, or API requests such as /admin/users / /admin/new_address return 405 Method Not AllowedThis is usually caused by an incorrect frontend backend address. Check VITE_API_BASE, the URL entered when generating the zip in the UI guide, or FRONTEND_ENV: for separate frontend/backend deployment talking directly to Worker, it should be the backend Worker API root URL, start with https://, and have no trailing /; if you use PAGE_TOML to proxy backend requests through Page Functions, VITE_API_BASE can be left empty to use same-origin requests. See Pages Frontend Deployment
Refreshing page or directly visiting /admin, /user returns 404This project is a Single-Page Application (SPA). When deploying Pages via UI, set "Not Found handling" to Single-page application (SPA) in the advanced options. See Pages Frontend Deployment
Admin login shows Network Error and the request is /open_api/admin_loginCheck that the backend API root URL used when generating the frontend zip is the Worker domain, not the Pages domain; it must not include /admin, /api, or a trailing /. Also confirm the response is not a Cloudflare security challenge page
IssueSolution
Set DEFAULT_SEND_BALANCE but still getting No balanceRefresh the settings page or try sending again first. When DEFAULT_SEND_BALANCE > 0, the system only auto-initializes the default quota for addresses that have no address_sender row yet; existing rows — including legacy balance = 0 && enabled = 0 rows, admin-disabled rows, and admin-edited rows — are never modified by the runtime and must be manually restored by an admin (enable + set balance). Alternatively, add the address to the "No Limit Send Address List" in the admin console, or configure NO_LIMIT_SEND_ROLE
Error: Please enable resend or smtp for this domainYou need to configure RESEND_TOKEN or SMTP_CONFIG first. See Configure Email Sending
SMTP_CONFIG configured but sending failsMake sure the JSON key is your own sending domain (e.g. your-domain.com), not the example awsl.uk. See Configure Email Sending
IssueSolution
Set ENABLE_ADDRESS_PASSWORD but Foxmail/Outlook cannot loginENABLE_ADDRESS_PASSWORD only enables the "address password login" web API. It does NOT provide standard IMAP/SMTP service. To use mail clients, you need to deploy the SMTP/IMAP Proxy Service

Telegram Bot

IssueSolution
Telgram Bot failed to get email: 400: Bad Request:BUTTON_URL_INVALIDtg mini app URL is incorrect, should be the pages URL
Telegram bot bind error: bind adress count reach the limitNeed to set worker variable TG_MAX_ADDRESS

Github Actions

IssueSolution
After Github Action deployment, CF always shows preview branchGo to CF pages settings to confirm that the frontend branch matches the Github Action frontend deployment branch
Use GitHub Actions auto-update while forwarding backend requests through Page FunctionsEnable the Deploy Frontend with page function workflow and configure the PAGE_TOML secret. Copy pages/wrangler.toml into PAGE_TOML, then change service to your Worker backend name. This workflow uses same-origin requests and does not need FRONTEND_ENV

Based on MIT license