update email templates and subjects

This commit is contained in:
Niko Heller 2024-08-28 13:25:55 +02:00
parent ae6da78c62
commit ee120a04ff
14 changed files with 87 additions and 68 deletions

View file

@ -96,7 +96,7 @@ const providers: Provider[] = [
if (user) { if (user) {
await emailClient.sendTemplate("LoginEmail", { await emailClient.sendTemplate("LoginEmail", {
to: email, to: email,
subject: `${token} is your 6-digit code`, subject: `${token} ist Dein sechsstelliger Eingabecode`,
props: { props: {
name: user.name, name: user.name,
magicLink: absoluteUrl("/auth/login", { magicLink: absoluteUrl("/auth/login", {

View file

@ -235,7 +235,7 @@ export const polls = router({
waitUntil( waitUntil(
ctx.emailClient.sendTemplate("NewPollEmail", { ctx.emailClient.sendTemplate("NewPollEmail", {
to: user.email, to: user.email,
subject: `Let's find a date for ${poll.title}`, subject: `Lasst uns einen Termin finden für ${poll.title}`,
props: { props: {
title: poll.title, title: poll.title,
name: user.name, name: user.name,
@ -914,7 +914,7 @@ export const polls = router({
const emailToHost = waitUntil( const emailToHost = waitUntil(
ctx.emailClient.sendTemplate("FinalizeHostEmail", { ctx.emailClient.sendTemplate("FinalizeHostEmail", {
subject: `Date booked for ${poll.title}`, subject: `Termin gefunden für ${poll.title}`,
to: poll.user.email, to: poll.user.email,
props: { props: {
name: poll.user.name, name: poll.user.name,
@ -939,7 +939,7 @@ export const polls = router({
const emailsToParticipants = participantsToEmail.map((p) => { const emailsToParticipants = participantsToEmail.map((p) => {
return ctx.emailClient.sendTemplate("FinalizeParticipantEmail", { return ctx.emailClient.sendTemplate("FinalizeParticipantEmail", {
subject: `Date booked for ${poll.title}`, subject: `Termin gefunden für ${poll.title}`,
to: p.email, to: p.email,
props: { props: {
name: p.name, name: p.name,

View file

@ -82,7 +82,7 @@ export const comments = router({
emailsToSend.push( emailsToSend.push(
ctx.emailClient.sendTemplate("NewCommentEmail", { ctx.emailClient.sendTemplate("NewCommentEmail", {
to: email, to: email,
subject: `${authorName} has commented on ${poll.title}`, subject: `${authorName} hat ${poll.title} kommentiert`,
props: { props: {
name: watcher.user.name, name: watcher.user.name,
authorName, authorName,

View file

@ -125,7 +125,7 @@ export const participants = router({
emailsToSend.push( emailsToSend.push(
ctx.emailClient.sendTemplate("NewParticipantConfirmationEmail", { ctx.emailClient.sendTemplate("NewParticipantConfirmationEmail", {
to: email, to: email,
subject: `Thanks for responding to ${poll.title}`, subject: `Danke für Deine Beteiligung an ${poll.title}`,
props: { props: {
name, name,
title: poll.title, title: poll.title,
@ -162,7 +162,7 @@ export const participants = router({
emailsToSend.push( emailsToSend.push(
ctx.emailClient.sendTemplate("NewParticipantEmail", { ctx.emailClient.sendTemplate("NewParticipantEmail", {
to: email, to: email,
subject: `${participant.name} has responded to ${poll.title}`, subject: `${participant.name} hat in ${poll.title} geantwortet`,
props: { props: {
name: watcher.user.name, name: watcher.user.name,
participantName: participant.name, participantName: participant.name,

View file

@ -60,7 +60,7 @@ export const EmailLayout = ({
<Container style={containerStyles}> <Container style={containerStyles}>
<Img src={logoUrl} alt="Rallly" width={128} /> <Img src={logoUrl} alt="Rallly" width={128} />
<Section style={sectionStyles}> <Section style={sectionStyles}>
{recipientName ? <Text>Hi {recipientName},</Text> : null} {recipientName ? <Text>Hallo {recipientName},</Text> : null}
{children} {children}
{footNote ? ( {footNote ? (
<Text <Text
@ -81,19 +81,29 @@ export const EmailLayout = ({
Home Home
</Link> </Link>
<span>&nbsp;&bull;&nbsp;</span> <span>&nbsp;&bull;&nbsp;</span>
<Link style={linkStyles} href="https://twitter.com/ralllyco"> <Link
Twitter style={linkStyles}
</Link> href="https://www.gruene.de/service/impressum"
<span>&nbsp;&bull;&nbsp;</span> >
<Link style={linkStyles} href="https://github.com/lukevella/rallly"> Impressum
Github
</Link> </Link>
<span>&nbsp;&bull;&nbsp;</span> <span>&nbsp;&bull;&nbsp;</span>
<Link <Link
style={linkStyles} style={linkStyles}
href={`mailto:${process.env["SUPPORT_EMAIL"]}`} href="https://www.gruene.de/service/datenschutz"
> >
Contact Datenschutz
</Link>
<span>&nbsp;&bull;&nbsp;</span>
<Link
style={linkStyles}
href="https://netz.gruene.de/de/wissenswerk/2024-08/die-neue-termite"
>
Hilfe
</Link>
<span>&nbsp;&bull;&nbsp;</span>
<Link style={linkStyles} href="https://rallly.co">
Diese Anwendung basiert auf Rallly
</Link> </Link>
</Section> </Section>
</Container> </Container>

View file

@ -29,9 +29,10 @@ export const NotificationEmail = ({
recipientName={name} recipientName={name}
footNote={ footNote={
<> <>
If you would like to stop receiving updates you can{" "} Wenn Du nicht mehr über Neuigkeiten informiert werden möchtest, kannst
Du die Benachrichtigungen in den Einstellungen{" "}
<Link className="whitespace-nowrap" href={disableNotificationsUrl}> <Link className="whitespace-nowrap" href={disableNotificationsUrl}>
turn notifications off deaktivieren
</Link> </Link>
. .
</> </>
@ -40,7 +41,7 @@ export const NotificationEmail = ({
> >
{children} {children}
<Text> <Text>
<Button href={pollUrl}>View on {domain}</Button> <Button href={pollUrl}>Du findest die Umfrage unter {domain}</Button>
</Text> </Text>
</EmailLayout> </EmailLayout>
); );

View file

@ -30,7 +30,7 @@ export const FinalizeHostEmail = ({
return ( return (
<EmailLayout ctx={ctx} recipientName={name} preview="Final date booked!"> <EmailLayout ctx={ctx} recipientName={name} preview="Final date booked!">
<Text> <Text>
<strong>{title}</strong> has been booked for: Es wurde ein Termin vereinbart für <strong>{title}</strong>:
</Text> </Text>
<Section> <Section>
<Row> <Row>
@ -71,10 +71,11 @@ export const FinalizeHostEmail = ({
</Row> </Row>
</Section> </Section>
<Text> <Text>
We&apos;ve notified participants and sent them calendar invites. Wir haben die Teilnehmer*innen benachrichtigt und ihnen
Kalendereinladungen zugeschickt.
</Text> </Text>
<Text> <Text>
<Button href={pollUrl}>View Event</Button> <Button href={pollUrl}>Termin anzeigen</Button>
</Text> </Text>
</EmailLayout> </EmailLayout>
); );

View file

@ -32,8 +32,8 @@ export const FinalizeParticipantEmail = ({
return ( return (
<EmailLayout ctx={ctx} recipientName={name} preview="Final date booked!"> <EmailLayout ctx={ctx} recipientName={name} preview="Final date booked!">
<Text> <Text>
<strong>{hostName}</strong> has booked <strong>{title}</strong> for the <strong>{hostName}</strong> hat für <strong>{title}</strong> folgendes
following date: Datum festgelegt:
</Text> </Text>
<Section> <Section>
<Row> <Row>
@ -73,9 +73,9 @@ export const FinalizeParticipantEmail = ({
</Column> </Column>
</Row> </Row>
</Section> </Section>
<Text>Please find attached a calendar invite for this event.</Text> <Text>Anbei findest Du die Kalendereinladung für diesen Termin.</Text>
<Text> <Text>
<Button href={pollUrl}>View Event</Button> <Button href={pollUrl}>Termin anzeigen</Button>
</Text> </Text>
</EmailLayout> </EmailLayout>
); );

View file

@ -27,32 +27,37 @@ export const LoginEmail = ({
ctx={ctx} ctx={ctx}
footNote={ footNote={
<> <>
You&apos;re receiving this email because a request was made to login Du hast diese E-Mail erhalten, da ein Login-Versuch bei{" "}
to <Domain ctx={ctx} />. If this wasn&apos;t you, let us know by <Domain ctx={ctx} /> stattgefunden hat. Wenn Du das nicht warst, lass
replying to this email. es uns bitte wissen und antworte auf diese E-Mail.
</> </>
} }
recipientName={name} recipientName={name}
preview="Use this link to log in on this device." preview="Use this link to log in on this device."
> >
<Text> <Text>
To log in to your account, please choose one of the following options: um Dich in Deinen Account einzuloggen, wähle bitte eine der folgenden
Optionen:
</Text> </Text>
<Card> <Card>
<Heading>Option 1: Magic Link</Heading> <Heading>Option 1: Magischer Link</Heading>
<Text>Click this magic link to log in on this device.</Text> <Text>
Klicke auf den magischen Link um Dich auf diesem Gerät anzumelden.
</Text>
<Button href={magicLink} id="magicLink"> <Button href={magicLink} id="magicLink">
Log in to {ctx.domain} Logge Dich ein auf {ctx.domain}
</Button> </Button>
<Text light={true}>This link will expire in 15 minutes.</Text> <Text light={true}>Dieser Link ist nur für 15 Minuten gültig. </Text>
</Card> </Card>
<Card> <Card>
<Heading>Option 2: Verification Code</Heading> <Heading>Option 2: Verifizierungscode</Heading>
<Text>Enter this one-time 6-digit verification code.</Text> <Text>
Gib diesen sechsstelligen Einmal-Code für die Verifizierung ein.
</Text>
<Heading as="h1" style={trackingWide} id="code"> <Heading as="h1" style={trackingWide} id="code">
{code} {code}
</Heading> </Heading>
<Text light={true}>This code will expire in 15 minutes.</Text> <Text light={true}>Dieser Code ist nur für 15 Minuten gültig.</Text>
</Card> </Card>
</EmailLayout> </EmailLayout>
); );

View file

@ -26,7 +26,7 @@ export const NewCommentEmail = ({
preview="Go to your poll to see what they said." preview="Go to your poll to see what they said."
> >
<Text> <Text>
<strong>{authorName}</strong> has commented on <strong>{title}</strong>. <strong>{authorName}</strong> hat <strong>{title}</strong> kommentiert.
</Text> </Text>
</NotificationEmail> </NotificationEmail>
); );

View file

@ -20,24 +20,25 @@ export const NewParticipantConfirmationEmail = ({
ctx={ctx} ctx={ctx}
footNote={ footNote={
<> <>
You are receiving this email because a response was submitted on{" "} Du erhältst diese E-Mail, da eine Antwort auf <Domain ctx={ctx} />{" "}
<Domain ctx={ctx} />. If this wasn&apos;t you, please ignore this eingegangen ist. Wenn Du das nicht warst, ignoriere bitte diese
email. E-Mail.
</> </>
} }
recipientName={name} recipientName={name}
preview="To edit your response use the link below" preview="To edit your response use the link below"
> >
<Text> <Text>
Your response to <strong>{title}</strong> has been submitted. Deine Antwort auf <strong>{title}</strong> wurde erfolgreich
übermittelt.
</Text> </Text>
<Text> <Text>
While the poll is still open you can change your response using the link Solange die Umfrage noch läuft, kannst Du Deine Antwort über den
below. folgenden Link ändern oder anschauen:
</Text> </Text>
<Section> <Section>
<Button id="editSubmissionUrl" href={editSubmissionUrl}> <Button id="editSubmissionUrl" href={editSubmissionUrl}>
Review response on {domain} Ansehen auf {domain}
</Button> </Button>
</Section> </Section>
</EmailLayout> </EmailLayout>

View file

@ -26,8 +26,8 @@ export const NewParticipantEmail = ({
preview="Go to your poll to see the new response." preview="Go to your poll to see the new response."
> >
<Text> <Text>
<strong>{participantName}</strong> has responded to{" "} <strong>{participantName}</strong> hat an Deiner Umfrage{" "}
<strong>{title}</strong>. <strong>{title}</strong> teilgenommen.
</Text> </Text>
</NotificationEmail> </NotificationEmail>
); );

View file

@ -23,9 +23,9 @@ const ShareLink = ({
return ( return (
<Link <Link
href={`mailto:?subject=${encodeURIComponent( href={`mailto:?subject=${encodeURIComponent(
`Availability for ${title}`, `Terminfindung für ${title}`,
)}&body=${encodeURIComponent( )}&body=${encodeURIComponent(
`Hi all,\nI'm trying to find the best date for ${title}.\nCan you please use the link below to choose your preferred dates:\n${participantLink}\nThank you.\n${name}`, `Hallo,\nIch versuche einen passenden Termin für ${title} zu finden.\nKannst du bitte den Link unten benutzen um deine bevorzugten Termine anzugeben:\n${participantLink}\nDankeschön.\n${name}`,
)}`} )}`}
> >
{children} {children}
@ -46,22 +46,21 @@ export const NewPollEmail = ({
ctx={ctx} ctx={ctx}
footNote={ footNote={
<> <>
You are receiving this email because a new poll was created with this Du erhältst diese E-Mail, weil eine neue Umfrage unter Angabe dieser
email address on <Link href={baseUrl}>{domain}</Link>. If this E-Mail-Adresse auf <Link href={baseUrl}>{domain}</Link> erstellt
wasn&apos;t you, please ignore this email. wurde. Falls dies nicht von dir veranlasst wurde, ignoriere bitte
diese E-Mail.
</> </>
} }
recipientName={name} recipientName={name}
preview="Share your participant link to start collecting responses." preview="Share your participant link to start collecting responses."
> >
<Text> <Text>Deine Umfrage wurde erfolgreich angelegt!</Text>
Your poll has been successfully created! Here are the details:
</Text>
<Card> <Card>
<Text> <Text>
<strong>Title:</strong> {title} <strong>Titel:</strong> {title}
<br /> <br />
<strong>Invite Link:</strong>{" "} <strong>Einladungslink:</strong>{" "}
<Link href={participantLink}>{participantLink}</Link> <Link href={participantLink}>{participantLink}</Link>
</Text> </Text>
<Text> <Text>
@ -70,18 +69,19 @@ export const NewPollEmail = ({
name={name} name={name}
participantLink={participantLink} participantLink={participantLink}
> >
Share via email Per E-Mail teilen
</ShareLink> </ShareLink>
</Text> </Text>
</Card> </Card>
<Text> <Text>
To invite participants to your poll, simply share the{" "} Um Teilnehmer*innen zu deiner Umfrage einzuladen, teile einfach den oben
<strong>Invite Link</strong> above with them. They&apos;ll be able to genannten <strong>Einladungslink</strong> mit ihnen. Sie können dann für
vote on their preferred meeting times and dates. ihre bevorzugten Termine und Zeiten abstimmen.
</Text> </Text>
<Text> <Text>
If you need to make any changes to your poll, or if you want to see the Wenn du Änderungen an deiner Umfrage vornehmen möchtest oder die
results so far, just click on the button below: bisherigen Ergebnisse einsehen willst, klicke einfach auf den folgenden
Button:
</Text> </Text>
<Text> <Text>
<Button href={adminLink}>Manage Poll &rarr;</Button> <Button href={adminLink}>Manage Poll &rarr;</Button>

View file

@ -21,20 +21,21 @@ export const RegisterEmail = ({
ctx={ctx} ctx={ctx}
footNote={ footNote={
<> <>
You&apos;re receiving this email because a request was made to Du erhältst diese E-Mail, da eine Registrierungsanfrage auf{" "}
register an account on <Domain ctx={ctx} />. If this wasn&apos;t you, <Domain ctx={ctx} /> eingegangen ist. Wenn Du das nicht warst,
please ignore this email. ignoriere bitte diese E-Mail.
</> </>
} }
preview={`Your 6-digit code is: ${code}`} preview={`Your 6-digit code is: ${code}`}
> >
<Text> <Text>
Please use the following 6-digit verification code to verify your email: Bitte nutze folgenden sechsstelligen Code um Deine E-Mailadresse zu
verifizieren:
</Text> </Text>
<Heading as="h1" style={{ ...trackingWide }} id="code"> <Heading as="h1" style={{ ...trackingWide }} id="code">
{code} {code}
</Heading> </Heading>
<Text>This code is valid for 15 minutes</Text> <Text>Dieser Code ist nur für 15 Minuten gültig.</Text>
</EmailLayout> </EmailLayout>
); );
}; };