diff --git a/apps/backend/src/app/api/v1/internal/send-test-email/route.tsx b/apps/backend/src/app/api/v1/internal/send-test-email/route.tsx index 8627e7d4b..5d08853bd 100644 --- a/apps/backend/src/app/api/v1/internal/send-test-email/route.tsx +++ b/apps/backend/src/app/api/v1/internal/send-test-email/route.tsx @@ -2,7 +2,7 @@ import { isSecureEmailPort, sendEmailWithKnownErrorTypes } from "@/lib/emails"; import { createSmartRouteHandler } from "@/route-handlers/smart-route-handler"; import * as schemaFields from "@stackframe/stack-shared/dist/schema-fields"; import { adaptSchema, adminAuthTypeSchema, emailSchema, yupBoolean, yupNumber, yupObject, yupString } from "@stackframe/stack-shared/dist/schema-fields"; -import { captureError } from "@stackframe/stack-shared/dist/utils/errors"; +import { StackAssertionError, captureError } from "@stackframe/stack-shared/dist/utils/errors"; export const POST = createSmartRouteHandler({ metadata: { @@ -51,8 +51,18 @@ export const POST = createSmartRouteHandler({ text: "This is a test email from Stack Auth. If you successfully received this email, your email server configuration is working correctly.", }); + let errorMessage = result.status === 'error' ? result.error.message : undefined; + if (result.status === 'error' && result.error.errorType === 'UNKNOWN') { - captureError("Unknown error sending test email", result.error); + if (result.error.rawError.message && result.error.rawError.message.includes("ETIMEDOUT")) { + errorMessage = "Timed out. Make sure the email server is running and accepting connections."; + } else { + captureError("send-test-email", new StackAssertionError("Unknown error while sending test email. We should add a better error description for the user.", { + cause: result.error, + recipient_email: body.recipient_email, + email_config: body.email_config, + })); + } } return { @@ -60,7 +70,7 @@ export const POST = createSmartRouteHandler({ bodyType: 'json', body: { success: result.status === 'ok', - error_message: result.status === 'error' ? result.error.message : undefined, + error_message: errorMessage, }, }; },