@@ -2,7 +2,6 @@ import { DISCORD_CONTACT_WEBHOOK_URL, TURNSTILE_SECRET_TOKEN } from 'astro:env/s
22
33import { site } from '$utils/config' ;
44import { CLOUDFLARE_TURNSTILE_URL , MESSAGE_CHARACTER_LIMIT } from '$utils/constants' ;
5- import { formatDate } from '$utils/helpers/date' ;
65
76export interface MessageDetails {
87 name : string ;
@@ -16,14 +15,12 @@ export interface SubmissionResult {
1615}
1716
1817const returnEncodedMailtoUrl = ( email : string , name : string , message : string ) => {
19- const mailtoUrl = `mailto:${ encodeURIComponent ( email ) } ?subject=${ encodeURIComponent ( `Re: Message from ${ name } ` ) } &body=${ encodeURIComponent (
20- `%0D%0A%0D%0AOn ${ formatDate ( new Date ( ) , 'iso' ) } , ${ name } wrote:%0D%0A%0D%0A${ message
21- . split ( '\n' )
22- . map ( ( line ) => `> ${ line } ` )
23- . join ( '%0D%0A' ) } `
24- ) } `;
25-
26- return `${ site . url } /api/mailto?url=${ encodeURIComponent ( mailtoUrl ) } ` ;
18+ const url = new URL ( `${ site . url } /api/mailto` ) ;
19+ url . searchParams . set ( 'email' , email ) ;
20+ url . searchParams . set ( 'name' , name ) ;
21+ url . searchParams . set ( 'message' , message ) ;
22+
23+ return `<${ url . href } >` ;
2724} ;
2825
2926const sendDiscordMessage = async ( details : MessageDetails , url : string ) => {
@@ -55,15 +52,8 @@ const sendDiscordMessage = async (details: MessageDetails, url: string) => {
5552 accent_color : 0xf38ba8 ,
5653 components : [
5754 {
58- type : 1 ,
59- components : [
60- {
61- type : 2 ,
62- label : 'Reply via Email' ,
63- style : 5 ,
64- url : returnEncodedMailtoUrl ( details . email , details . name , details . message ) ,
65- } ,
66- ] ,
55+ type : 10 ,
56+ content : `🔗 [Reply via email](${ returnEncodedMailtoUrl ( details . email , details . name , details . message ) } )` ,
6757 } ,
6858 ] ,
6959 } ,
0 commit comments