{"record":{"id":"e499a3b4bb35d901","repo":"Foundry376/Mailspring","slug":"the-from-address-has-changed-since-you-started-sen","errorCode":null,"errorMessage":"The from address has changed since you started sending this draft. Double-check the draft and click 'Send' again.","messagePattern":"The from address has changed since you started sending this draft\\. Double-check the draft and click 'Send' again\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"app/src/flux/tasks/send-draft-task.ts","lineNumber":128,"sourceCode":"\n  // Note: accountId and headerMessageId accessors are defined after class\n  // declaration using Object.defineProperty to work around TypeScript 5\n  // property/accessor override restrictions\n\n  label() {\n    return this.silent ? null : localized('Sending message');\n  }\n\n  willBeQueued() {\n    if (!this.draft.from[0]) {\n      throw new Error('SendDraftTask - you must populate `from` before sending.');\n    }\n    const account = AccountStore.accountForEmail(this.draft.from[0].email);\n    if (!account) {\n      throw new Error('SendDraftTask - you can only send drafts from a configured account.');\n    }\n    if (this.draft.accountId !== account.id) {\n      throw new Error(\n        localized(\n          \"The from address has changed since you started sending this draft. Double-check the draft and click 'Send' again.\"\n        )\n      );\n    }\n  }\n\n  onSuccess() {\n    Actions.draftDeliverySucceeded({\n      headerMessageId: this.draft.headerMessageId,\n      accountId: this.draft.accountId,\n    });\n\n    // Play the sending sound\n    if (AppEnv.config.get('core.sending.sounds') && !this.silent) {\n      SoundRegistry.playSound('send');\n    }\n","sourceCodeStart":110,"sourceCodeEnd":146,"githubUrl":"https://github.com/Foundry376/Mailspring/blob/648c685d602ece6bb00c22534b8734de6ac644b3/app/src/flux/tasks/send-draft-task.ts#L110-L146","documentation":"SendDraftTask.willBeQueued guard: the draft's from address no longer resolves to a configured account at queue time — the account was removed, or the draft's from header changed after sending began (e.g. default identity switched). The task refuses to send to prevent delivering mail from an address the user no longer controls.","triggerScenarios":"Thrown at app/src/flux/tasks/send-draft-task.ts:128 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Reopen the draft, pick a valid 'from' account in the composer, and click Send again","Re-add the removed account or change the draft's from address to a configured one"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"648c685d602ece6bb00c22534b8734de6ac644b3","analyzedAt":"2026-09-03T02:00:24.311Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T07:17:11.731Z"}