Contact form: SMTP_FROM=hello@where-woof.com (SES-ready), add Reply-To

This commit is contained in:
2026-09-02 17:53:35 +10:00
parent 2a101e9a62
commit 39d99c5833
2 changed files with 17 additions and 7 deletions

View File

@@ -72,6 +72,13 @@ func sendContactEmail(name, email, subject, message string) error {
if port == "" {
port = "587"
}
// Sender address on the envelope + From header. Defaults to hello@where-woof.com
// (SES verified identity). For Gmail SMTP this is ignored/overridden by the
// authenticated user, so it stays safe either way.
from := os.Getenv("SMTP_FROM")
if from == "" {
from = "hello@where-woof.com"
}
subj := subject
if subj == "" {
@@ -80,7 +87,8 @@ func sendContactEmail(name, email, subject, message string) error {
body := fmt.Sprintf("From: %s <%s>\nSubject: %s\n\n%s", name, email, subj, message)
msg := []byte("To: " + to + "\r\n" +
"From: " + user + "\r\n" +
"From: " + from + "\r\n" +
"Reply-To: " + email + "\r\n" +
"Subject: " + subj + "\r\n" +
"MIME-Version: 1.0\r\n" +
"Content-Type: text/plain; charset=utf-8\r\n" +
@@ -88,5 +96,5 @@ func sendContactEmail(name, email, subject, message string) error {
addr := host + ":" + port
auth := smtp.PlainAuth("", user, pass, host)
return smtp.SendMail(addr, auth, user, []string{to}, msg)
return smtp.SendMail(addr, auth, from, []string{to}, msg)
}

View File

@@ -14,7 +14,7 @@ x 2026-08-07 (A) Edit this tags details allowed me to edit +project:where-woof
x 2026-08-07 (B) Scan-flow: re-alert when different finder phone within 250 m window +project:where-woof +agent:right-monitor-pi-coding
x 2026-08-07 (B) Scan-flow: browser fingerprint + 24 h block, store in DB +project:where-woof +agent:right-monitor-pi-coding
x 2026-08-07 (B) Preset tag-ID registry: seed real manufactured IDs, enforce registry-only (anti-scam) +project:where-woof +agent:right-monitor-pi-coding
(B) Billing phase (Stripe AU, plans, scan limits, paid-gating) +project:where-woof +agent:where_woof
x 2026-09-01 (B) Billing phase (Stripe AU, plans, scan limits, paid-gating) +project:where-woof +agent:where_woof
(C) Photo uploads + object storage (Phase 6 — basic local upload done) +project:where-woof +agent:where_woof
(C) Anti-abuse hardening (relay numbers, rate limits — Phase 9) +project:where-woof +agent:where_woof
(C) Live SMS creds on .13 service env (uncomment SMS_USER/PASSWORD/FROM in ~/.config/where-woof.env) +project:where-woof +agent:where_woof
@@ -26,7 +26,9 @@ x 2026-08-08 2026-08-08 Billing phase +
(A) Do we tie this all into an established Open Source inventory payment system - keep qick dash for now? +area:CONCEPT
(A) Order-tags. Tie in the inventory system? +area:Where-woof
(A) General webiste pages - what is this? Get in touch? About Us. +area:Where-woof
(A) Order tags page + promotion banner (Protect & Recover Valuables — Order now) +project:where-woof +agent:where_woof
(A) Red promo banner on tag/about/contact/what-is-this pages +project:where-woof +agent:where_woof
(A) Get in touch page: hello@where-woof.com + contact form +project:where-woof +agent:where_woof
(C) Verify coordinates in scan/location flow +project:where-woof +agent:where_woof
x 2026-09-01 (A) Order tags page + promotion banner (Protect & Recover Valuables — Order now) +project:where-woof +agent:where_woof
x 2026-09-01 (A) Red promo banner on tag/about/contact/what-is-this pages +project:where-woof +agent:where_woof
x 2026-09-01 (A) Get in touch page: hello@where-woof.com + contact form +project:where-woof +agent:where_woof
x 2026-09-01 (C) Verify coordinates in scan/location flow +project:where-woof +agent:where_woof
(A) Go live: Stripe onboarding + live keys + live payment links +project:where-woof +agent:where_woof
(B) hello@where-woof.com email routing (Cloudflare/SES) +project:where-woof +agent:where_woof