diff --git a/docs/production-email-checklist.md b/docs/production-email-checklist.md index aed77fa..fa4580f 100644 --- a/docs/production-email-checklist.md +++ b/docs/production-email-checklist.md @@ -55,23 +55,29 @@ Fallback: reset links still log when `MAIL_HOST` is empty. Keep using Mailpit (`docker compose up`, http://localhost:8025). Do not point local Docker at Resend unless you intend to send real mail. -## 5. Contact email (`kontakt@bilhej.se`) +## 5. Inbound email on bilhej.se Inbound mail uses **Resend Receiving** on the root domain `bilhej.se`. No mailbox is created in -Strato; the MX record routes all `@bilhej.se` addresses to Resend. +Strato; the MX record routes all `@bilhej.se` addresses to Resend. You do not create each address +separately in Resend. **Setup (done once):** 1. Resend → **Domains** → `bilhej.se` → enable **Receiving** 2. Strato → **DNS** → add the receiving MX record (e.g. `inbound-smtp.eu-west-1.amazonaws.com`) 3. Wait until Resend shows receiving as **Verified** -4. Send a test mail to `kontakt@bilhej.se` and confirm it appears under **Emails → Receiving** +4. Send test mail to `support@bilhej.se` and `kontakt@bilhej.se`; confirm both appear under **Emails → Receiving** **Reading mail:** open the [Resend Receiving inbox](https://resend.com/emails/receiving). There is no automatic forward to Gmail unless you add a webhook handler later. | Address | Purpose | Where mail goes | |---------|---------|-----------------| -| `kontakt@bilhej.se` | General questions (site, orders, support) | Resend dashboard | -| `jcamorling@gmail.com` | Complaints (shown on `/kontakt` only) | Gmail directly | +| `support@bilhej.se` | Orders, Swish, status, technical issues | Resend dashboard | +| `kontakt@bilhej.se` | General contact, printed letter footer | Resend dashboard | +| `klagomal@bilhej.se` | Complaints (shown on `/kontakt`) | Resend dashboard | | `noreply@bilhej.se` | Outbound only (password reset) | Not an inbox | + +**Optional later (same Resend inbox, no extra DNS):** `abuse@bilhej.se` if you want a published +address for misuse reports; `privacy@bilhej.se` if integritetspolicy asks for a dedicated +data-protection contact. diff --git a/frontend/src/__tests__/ContactPage.spec.ts b/frontend/src/__tests__/ContactPage.spec.ts index 86f39f2..30e922b 100644 --- a/frontend/src/__tests__/ContactPage.spec.ts +++ b/frontend/src/__tests__/ContactPage.spec.ts @@ -9,17 +9,26 @@ describe('ContactPage', () => { expect(wrapper.text()).toContain('klagomål') }) - it('renders general support email', () => { + it('renders support email', () => { const wrapper = mount(ContactPage) - const link = wrapper.find('a[href="mailto:kontakt@bilhej.se"]') - expect(link.exists()).toBe(true) - expect(link.text()).toBe('kontakt@bilhej.se') + expect(wrapper.text()).toContain('support@bilhej.se') + }) + + it('renders general contact email', () => { + const wrapper = mount(ContactPage) + expect(wrapper.text()).toContain('kontakt@bilhej.se') }) it('renders complaints email', () => { const wrapper = mount(ContactPage) - const link = wrapper.find('a[href="mailto:jcamorling@gmail.com"]') + expect(wrapper.text()).toContain('klagomal@bilhej.se') + }) + + it('links support to mailto', () => { + const wrapper = mount(ContactPage) + const link = wrapper.find('a[href="mailto:support@bilhej.se"]') expect(link.exists()).toBe(true) - expect(wrapper.text()).toContain('jcamorling@gmail.com') + expect(link.text()).toBe('support@bilhej.se') + expect(link.attributes('aria-label')).toBe('Skicka till support: support@bilhej.se') }) }) diff --git a/frontend/src/pages/ContactPage.vue b/frontend/src/pages/ContactPage.vue index e3ba60e..462fed1 100644 --- a/frontend/src/pages/ContactPage.vue +++ b/frontend/src/pages/ContactPage.vue @@ -1,19 +1,27 @@