fix: update to AhaSend API v1 key

- Switch from API v2 to API v1 key
- Simplify payload format for v1 API
- Update documentation with domain verification requirement
- API Key v1: pxZ2d30PIqTl6Uj7p6g3o0uez2AacMaOstKCTcj9MTIrNEBvhikgvyAARUTvXAcA

Note: Domain beachlitter.ie likely needs verification in AhaSend dashboard
This commit is contained in:
2025-11-17 00:57:55 +00:00
parent d2ecaca5e8
commit 9b66f7a06b
2 changed files with 34 additions and 23 deletions

View File

@@ -1,7 +1,7 @@
import axios from 'axios';
// AhaSend API configuration
const AHASEND_API_KEY = process.env.AHASEND_API_KEY || 'aha-sk-A0c9WOA8cs3RpvkAGwHOP9o6pHx-gLTUki1gSWVeC_6kd86-Npn077zta-rvg9oo';
const AHASEND_API_KEY = process.env.AHASEND_API_KEY || 'pxZ2d30PIqTl6Uj7p6g3o0uez2AacMaOstKCTcj9MTIrNEBvhikgvyAARUTvXAcA';
const AHASEND_ACCOUNT_ID = process.env.AHASEND_ACCOUNT_ID || '8a14f9a5-6e6d-47c9-b5d6-a687265b36a3';
const FROM_EMAIL = process.env.FROM_EMAIL || 'Beach Litter Platform <noreply@beachlitter.ie>';
@@ -18,20 +18,12 @@ export class EmailService {
*/
async sendEmail(data: EmailData): Promise<boolean> {
try {
// Parse from email
const fromMatch = FROM_EMAIL.match(/<(.+)>/);
const fromEmail = fromMatch ? fromMatch[1] : FROM_EMAIL;
const fromName = FROM_EMAIL.replace(/<.+>/, '').trim();
const payload = {
to: [{ email: data.to }],
from: {
email: fromEmail,
name: fromName || 'Beach Litter Platform'
},
to: data.to,
from: FROM_EMAIL,
subject: data.subject,
text_body: data.text,
html_body: data.html || this.generateHtmlFromText(data.text),
text: data.text,
html: data.html || this.generateHtmlFromText(data.text),
};
console.log('[Email] Sending request to AhaSend API...');
@@ -39,7 +31,7 @@ export class EmailService {
console.log('[Email] Account ID:', AHASEND_ACCOUNT_ID);
const response = await axios.post(
`https://api.ahasend.com/v1/email`,
`https://api.ahasend.com/v1/messages`,
payload,
{
headers: {