diff --git a/packages/server/assets/emails/templates/basic/basic.html b/packages/server/assets/emails/templates/basic/basic.html
index 90e7585d5..00e57361d 100644
--- a/packages/server/assets/emails/templates/basic/basic.html
+++ b/packages/server/assets/emails/templates/basic/basic.html
@@ -518,7 +518,7 @@
font-size: 14px;
line-height: 1;
text-align: center;
- color: #999999;
+ color: #626263;
"
>
Sent from <%= params.server.name || 'Speckle Server' %> at
@@ -528,7 +528,8 @@
>
<%= params.server.url %>
- , deployed and managed by <%= params.server.company %>. Your
+ ,
+ deployed and managed by <%= params.server.company %>. Your
admin contact is <%= params.server.contact %>.
diff --git a/packages/server/assets/emails/templates/components/ctaButton.mjml b/packages/server/assets/emails/templates/components/ctaButton.mjml
index bbbd4fbab..d72b7e89e 100644
--- a/packages/server/assets/emails/templates/components/ctaButton.mjml
+++ b/packages/server/assets/emails/templates/components/ctaButton.mjml
@@ -1,15 +1,14 @@
-
+
<%- params.cta.title -%>
diff --git a/packages/server/assets/emails/templates/components/footer.mjml b/packages/server/assets/emails/templates/components/footer.mjml
index efb333941..96430dba5 100644
--- a/packages/server/assets/emails/templates/components/footer.mjml
+++ b/packages/server/assets/emails/templates/components/footer.mjml
@@ -1,6 +1,6 @@
-
+
-
+
Sent from <%- params.serverInfo.name -%> at
<%- params.serverInfo.canonicalUrl -%>
- , deployed and managed by <%- params.serverInfo.company -%>. Your admin contact is
+ , deployed and managed by <%- params.serverInfo.company -%>.
+
+ Your admin contact is
- <%- params.serverInfo.adminContact -%>
+ <%- params.serverInfo.adminContact -%>.
- .
-
+
-
+
Brought to you by
Speckle
- , the Open Source Data Platform for 3D Data. Follow Us
+ , the Open Source Data Platform for 3D Data.
-
- LinkedIn
+ Join our
+ Community forum
+
+
+ Follow us
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- Twitter
- Instagram
- Facebook
- YouTube
- Community
diff --git a/packages/server/assets/emails/templates/components/head.mjml b/packages/server/assets/emails/templates/components/head.mjml
index 83878e56d..e5529ffd6 100644
--- a/packages/server/assets/emails/templates/components/head.mjml
+++ b/packages/server/assets/emails/templates/components/head.mjml
@@ -1,6 +1,7 @@
-
+
+
h1 { font-size: 2em } h2 { font-size: 1.5em } h3 { font-size: 1.17em } h4 {
diff --git a/packages/server/assets/emails/templates/components/headerLogo.mjml b/packages/server/assets/emails/templates/components/headerLogo.mjml
index 383d1750f..c9e0ae10d 100644
--- a/packages/server/assets/emails/templates/components/headerLogo.mjml
+++ b/packages/server/assets/emails/templates/components/headerLogo.mjml
@@ -1,7 +1,7 @@
-
+
diff --git a/packages/server/assets/emails/templates/speckleBasicEmailTemplate.mjml.ejs b/packages/server/assets/emails/templates/speckleBasicEmailTemplate.mjml.ejs
index 40b3bc310..321772dba 100644
--- a/packages/server/assets/emails/templates/speckleBasicEmailTemplate.mjml.ejs
+++ b/packages/server/assets/emails/templates/speckleBasicEmailTemplate.mjml.ejs
@@ -6,9 +6,7 @@
-
- <%- params.body.mjml -%>
-
+ <%- params.body.mjml -%>
<% if (params.cta) { %>
@@ -18,19 +16,19 @@
<% if (params.bodyEnd?.mjml?.length) { %>
-
- <%- params.bodyEnd?.mjml -%>
-
+ <%- params.bodyEnd?.mjml -%>
- <% } %>
-
- <% if (params.user?.email) { %>
-
+ <% } %> <% if (params.user?.email) { %>
+
-
+
If you don't want to receive these emails, update your preferences
- here
+
+ here
+
.
diff --git a/packages/server/assets/public/social/facebook.svg b/packages/server/assets/public/social/facebook.svg
new file mode 100644
index 000000000..133487659
--- /dev/null
+++ b/packages/server/assets/public/social/facebook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/server/assets/public/social/instagram.svg b/packages/server/assets/public/social/instagram.svg
new file mode 100644
index 000000000..615c7d6e3
--- /dev/null
+++ b/packages/server/assets/public/social/instagram.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/server/assets/public/social/linkedin.svg b/packages/server/assets/public/social/linkedin.svg
new file mode 100644
index 000000000..d9d3241e7
--- /dev/null
+++ b/packages/server/assets/public/social/linkedin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/server/assets/public/social/x.svg b/packages/server/assets/public/social/x.svg
new file mode 100644
index 000000000..ff082526f
--- /dev/null
+++ b/packages/server/assets/public/social/x.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/server/assets/public/social/youtube.svg b/packages/server/assets/public/social/youtube.svg
new file mode 100644
index 000000000..bda19ab71
--- /dev/null
+++ b/packages/server/assets/public/social/youtube.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/server/assets/public/speckle-email-logo.png b/packages/server/assets/public/speckle-email-logo.png
index 79aef8d15..bd5f850ab 100644
Binary files a/packages/server/assets/public/speckle-email-logo.png and b/packages/server/assets/public/speckle-email-logo.png differ
diff --git a/packages/server/modules/emails/services/verification/request.ts b/packages/server/modules/emails/services/verification/request.ts
index 5547b33cb..694fd684a 100644
--- a/packages/server/modules/emails/services/verification/request.ts
+++ b/packages/server/modules/emails/services/verification/request.ts
@@ -16,7 +16,7 @@ import {
import { GetUser } from '@/modules/core/domain/users/operations'
import { GetServerInfo } from '@/modules/core/domain/server/operations'
-const EMAIL_SUBJECT = 'Speckle Account E-mail Verification'
+const EMAIL_SUBJECT = 'Speckle account email verification'
type CreateNewVerificationDeps = {
getUser: GetUser
@@ -101,11 +101,11 @@ const createNewEmailVerificationFactory =
}
function buildMjmlBody(verificationCode: string) {
- const bodyStart = `
You have just registered to the Speckle server, or initiated the email verification process manually. To finalize the verification process, use the code below.
- ${verificationCode}
-
This code will expire in 5 minutes. Please do not disclose this code to others.
-
If you did not make this request, please disregard this email.
-
See you soon, Speckle
`
+ const bodyStart = `You have just registered to the Speckle server, or initiated the email verification process manually. To finalize the verification process, use the code below.
+ ${verificationCode}
+ This code will expire in 5 minutes. Please do not disclose this code to others.
+ If you did not make this request, please disregard this email.
+ See you soon, Speckle`
return { bodyStart }
}
diff --git a/packages/server/modules/emails/tests/verifications.spec.ts b/packages/server/modules/emails/tests/verifications.spec.ts
index 6fb9eb028..75b9f24b3 100644
--- a/packages/server/modules/emails/tests/verifications.spec.ts
+++ b/packages/server/modules/emails/tests/verifications.spec.ts
@@ -92,7 +92,7 @@ describe('Email verifications @emails', () => {
const emailParams = sendEmailInvocations.args[0][0]
expect(emailParams).to.be.ok
- expect(emailParams.subject).to.contain('Speckle Account E-mail Verification')
+ expect(emailParams.subject).to.contain('Speckle account email verification')
const verification = await getPendingToken({ email: newGuy.email })
expect(verification).to.be.ok
@@ -157,7 +157,7 @@ describe('Email verifications @emails', () => {
const emailParams = sendEmailInvocations.args[0][0]
expect(emailParams).to.be.ok
- expect(emailParams.subject).to.contain('Speckle Account E-mail Verification')
+ expect(emailParams.subject).to.contain('Speckle account email verification')
expect(emailParams.html).to.be.ok
expect(emailParams.text).to.be.ok
diff --git a/packages/server/modules/gatekeeper/services/trialEmails.ts b/packages/server/modules/gatekeeper/services/trialEmails.ts
index 424856814..40a9d8f31 100644
--- a/packages/server/modules/gatekeeper/services/trialEmails.ts
+++ b/packages/server/modules/gatekeeper/services/trialEmails.ts
@@ -31,21 +31,17 @@ const buildMjmlBody = ({
expiresInDays === 0
? `today`
: `in ${expiresInDays} days`
- const bodyStart = `
+ const bodyStart = `
Hi ${workspaceAdmin.name}!
The trial for your workspace ${workspace.name} expires ${expireMessage}.
-
Upgrade to a paid plan before the trial expires to keep using your workspace. You can compare plans and get an overview of your estimated billing from your workspace's billing settings.
-
-
-
`
- const bodyEnd = `
-Have questions or feedback? Please write us at hello@speckle.systems and we'd be more than happy to talk.
+ const bodyEnd = `
+Have questions or feedback? Please write us at hello@speckle.systems and we'd be more than happy to talk.
`
return { bodyStart, bodyEnd }
}
diff --git a/packages/server/modules/notifications/services/handlers/mentionedInComment.ts b/packages/server/modules/notifications/services/handlers/mentionedInComment.ts
index ca411c45a..c8dc9bb7a 100644
--- a/packages/server/modules/notifications/services/handlers/mentionedInComment.ts
+++ b/packages/server/modules/notifications/services/handlers/mentionedInComment.ts
@@ -111,14 +111,14 @@ function buildEmailTemplateMjml(
return {
bodyStart: `
-
+
Hello,
${author.name} has just mentioned you in a comment on the ${stream.name} project.
Please click on the button below to see the comment.
`,
- bodyEnd: undefined
+ bodyEnd: `
${requester.name} requested access to the ${stream.name} project.
You can add them as a collaborator by clicking the button below.
`,
- bodyEnd: `
+ bodyEnd: `
You received this email because you are an owner on ${stream.name}.
`
}
diff --git a/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts b/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts
index 28e7e803b..b852486f1 100644
--- a/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts
+++ b/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts
@@ -62,13 +62,13 @@ function buildEmailTemplateMjml(
const { stream } = state
return {
- bodyStart: `
+ bodyStart: `
Hello,
You have just been granted access to the ${stream.name} project. Check it out below:
`,
- bodyEnd: `
+ bodyEnd: `
You received this email because you requested access to this project
`
}
diff --git a/packages/server/modules/pwdreset/services/request.ts b/packages/server/modules/pwdreset/services/request.ts
index f584c99b0..dcfd854b4 100644
--- a/packages/server/modules/pwdreset/services/request.ts
+++ b/packages/server/modules/pwdreset/services/request.ts
@@ -62,9 +62,9 @@ function buildResetLink(token: PasswordResetTokenRecord) {
}
function buildMjmlBody() {
- const bodyStart = `Hello,
You have just requested a password reset a few moments ago for your Speckle account. Please click on the button below to complete the process:`
+ const bodyStart = `Hello,
You have just requested a password reset a few moments ago for your Speckle account. Please click on the button below to complete the process:`
- const bodyEnd = `The link above is valid for 1 hour. If you didn't request a password reset, feel free to ignore this email - nothing will happen, and your account is secure.`
+ const bodyEnd = `The link above is valid for 1 hour. If you didn't request a password reset, feel free to ignore this email - nothing will happen, and your account is secure.`
return {
bodyStart,
diff --git a/packages/server/modules/serverinvites/services/coreEmailContents.ts b/packages/server/modules/serverinvites/services/coreEmailContents.ts
index e259dfb47..ffd1a9e8b 100644
--- a/packages/server/modules/serverinvites/services/coreEmailContents.ts
+++ b/packages/server/modules/serverinvites/services/coreEmailContents.ts
@@ -23,7 +23,7 @@ function buildServerMjmlPreamble(params: Parameters[0]
const { message } = invite
const bodyStart = `
-
+
Hello!
@@ -37,7 +37,7 @@ function buildServerMjmlPreamble(params: Parameters[0]
return {
bodyStart,
bodyEnd:
- 'Feel free to ignore this invite if you do not know the person sending it.'
+ 'Feel free to ignore this invite if you do not know the person sending it.'
}
}
@@ -101,7 +101,7 @@ function buildProjectMjmlPreamble(
const { message } = invite
const bodyStart = `
-
+
Hello!
@@ -117,7 +117,7 @@ function buildProjectMjmlPreamble(
return {
bodyStart,
bodyEnd:
- 'Feel free to ignore this invite if you do not know the person sending it.'
+ 'Feel free to ignore this invite if you do not know the person sending it.'
}
}
diff --git a/packages/server/modules/workspaces/services/invites.ts b/packages/server/modules/workspaces/services/invites.ts
index 9c8624fa2..e6c5e7c3d 100644
--- a/packages/server/modules/workspaces/services/invites.ts
+++ b/packages/server/modules/workspaces/services/invites.ts
@@ -326,7 +326,7 @@ export const buildWorkspaceInviteEmailContentsFactory =
const mjml = {
bodyStart: `
-
+
Hello!
@@ -334,7 +334,7 @@ export const buildWorkspaceInviteEmailContentsFactory =
`,
bodyEnd:
- 'Feel free to ignore this invite if you do not know the person sending it.'
+ 'Feel free to ignore this invite if you do not know the person sending it.'
}
const text = {
bodyStart: `Hello!
diff --git a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/approved.ts b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/approved.ts
index 9bef04dcb..2180cba24 100644
--- a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/approved.ts
+++ b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/approved.ts
@@ -13,18 +13,15 @@ const buildMjmlBody = ({
workspace,
requester
}: WorkspaceJoinRequestApprovedEmailArgs) => {
- const bodyStart = `
+ const bodyStart = `
Hi ${requester.name}!
You are now a member of the workspace ${workspace.name}.
-
-
-
`
- const bodyEnd = `
-Have questions or feedback? Please write us at hello@speckle.systems and we'd be more than happy to talk.
+ const bodyEnd = `
+Have questions or feedback? Please write us at hello@speckle.systems and we'd be more than happy to talk.
`
return { bodyStart, bodyEnd }
}
diff --git a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/denied.ts b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/denied.ts
index 8405f0341..8868f652e 100644
--- a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/denied.ts
+++ b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/denied.ts
@@ -13,18 +13,15 @@ const buildMjmlBody = ({
workspace,
requester
}: WorkspaceJoinRequestDeniedEmailArgs) => {
- const bodyStart = `
+ const bodyStart = `
Hi ${requester.name}!
Your request to join the workspace ${workspace.name} was denied by the workspace admin.
-
-
-
`
- const bodyEnd = `
-Have questions or feedback? Please write us at hello@speckle.systems and we'd be more than happy to talk.
+ const bodyEnd = `
+Have questions or feedback? Please write us at hello@speckle.systems and we'd be more than happy to talk.
`
return { bodyStart, bodyEnd }
}
diff --git a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/received.ts b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/received.ts
index 6ab9188b1..95366b533 100644
--- a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/received.ts
+++ b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/received.ts
@@ -19,18 +19,14 @@ const buildMjmlBody = ({
requester,
workspaceAdmin
}: WorkspaceJoinRequestReceivedEmailArgs) => {
- const bodyStart = `
+ const bodyStart = `
Hi ${workspaceAdmin.name}!
- ${requester.name} is requesting to join your workspace ${workspace.name}.
-
-
-
`
- const bodyEnd = `
-Have questions or feedback? Please write us at hello@speckle.systems and we'd be more than happy to talk.
+ const bodyEnd = `
+Have questions or feedback? Please write us at hello@speckle.systems and we'd be more than happy to talk.
`
return { bodyStart, bodyEnd }
}