diff --git a/Foxnouns.Backend/Foxnouns.Backend.csproj b/Foxnouns.Backend/Foxnouns.Backend.csproj index c6f9605..4ed5c44 100644 --- a/Foxnouns.Backend/Foxnouns.Backend.csproj +++ b/Foxnouns.Backend/Foxnouns.Backend.csproj @@ -22,6 +22,7 @@ all + diff --git a/Foxnouns.Backend/Mailables/AccountCreationMailable.cs b/Foxnouns.Backend/Mailables/AccountCreationMailable.cs index ee86b48..9c33213 100644 --- a/Foxnouns.Backend/Mailables/AccountCreationMailable.cs +++ b/Foxnouns.Backend/Mailables/AccountCreationMailable.cs @@ -19,9 +19,21 @@ namespace Foxnouns.Backend.Mailables; public class AccountCreationMailable(Config config, AccountCreationMailableView view) : Mailable { + private string PlainText() => + $""" + Please continue creating a new pronouns.cc account by using the following link: + {view.BaseUrl}/auth/callback/email/{view.Code} + Note that this link will expire in one hour. + + If you didn't mean to create a new account, feel free to ignore this email. + """; + public override void Build() { - To(view.To).From(config.EmailAuth.From!).View("~/Views/Mail/AccountCreation.cshtml", view); + To(view.To) + .From(config.EmailAuth.From!) + .View("~/Views/Mail/AccountCreation.cshtml", view) + .Text(PlainText()); } } diff --git a/Foxnouns.Backend/Mailables/AddEmailMailable.cs b/Foxnouns.Backend/Mailables/AddEmailMailable.cs index f40ffc0..1d29d0f 100644 --- a/Foxnouns.Backend/Mailables/AddEmailMailable.cs +++ b/Foxnouns.Backend/Mailables/AddEmailMailable.cs @@ -19,9 +19,21 @@ namespace Foxnouns.Backend.Mailables; public class AddEmailMailable(Config config, AddEmailMailableView view) : Mailable { + private string PlainText() => + $""" + Hello @{view.Username}, please confirm adding this email address to your account by using the following link: + {view.BaseUrl}/auth/callback/email/{view.Code} + Note that this link will expire in one hour. + + If you didn't mean to link this email address to @{view.Username}, feel free to ignore this email. + """; + public override void Build() { - To(view.To).From(config.EmailAuth.From!).View("~/Views/Mail/AddEmail.cshtml", view); + To(view.To) + .From(config.EmailAuth.From!) + .View("~/Views/Mail/AddEmail.cshtml", view) + .Text(PlainText()); } } diff --git a/Foxnouns.Backend/packages.lock.json b/Foxnouns.Backend/packages.lock.json index 03170c1..801e650 100644 --- a/Foxnouns.Backend/packages.lock.json +++ b/Foxnouns.Backend/packages.lock.json @@ -124,6 +124,17 @@ "Microsoft.Extensions.Primitives": "9.0.0" } }, + "MimeKit": { + "type": "Direct", + "requested": "[4.9.0, )", + "resolved": "4.9.0", + "contentHash": "DZXXMZzmAABDxFhOSMb6SE8KKxcRd/sk1E6aJTUE5ys2FWOQhznYV2Gl3klaaSfqKn27hQ32haqquH1J8Z6kJw==", + "dependencies": { + "BouncyCastle.Cryptography": "2.5.0", + "System.Formats.Asn1": "8.0.1", + "System.Security.Cryptography.Pkcs": "8.0.1" + } + }, "Minio": { "type": "Direct", "requested": "[6.0.3, )", @@ -284,8 +295,8 @@ }, "BouncyCastle.Cryptography": { "type": "Transitive", - "resolved": "2.2.1", - "contentHash": "A6Zr52zVqJKt18ZBsTnX0qhG0kwIQftVAjLmszmkiR/trSp8H+xj1gUOzk7XHwaKgyREMSV1v9XaKrBUeIOdvQ==" + "resolved": "2.5.0", + "contentHash": "rc7vRCq/KD3GtIwSgRtjanGaBwTb9nLenFDZnEcauWlssuuEoxcbMfWA3QWWho6QDMSOSkWjs657McdHzEtEcw==" }, "CommunityToolkit.HighPerformance": { "type": "Transitive", @@ -633,17 +644,6 @@ "resolved": "1.6.17", "contentHash": "Le+kehlmrlQfuDFUt1zZ2dVwrhFQtKREdKBo+rexOwaCoYP0/qpgT9tLxCsZjsgR5Itk1UKPcbgO+FyaNid/bA==" }, - "MimeKit": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "39KDXuERDy5VmHIn7NnCWvIVp/Ar4qnxZWg9m06DfRqDbW1B6zFv9o3Tdoa4CCu71tE/0SRqRCN5Z+bbffw6uw==", - "dependencies": { - "BouncyCastle.Cryptography": "2.2.1", - "System.Runtime.CompilerServices.Unsafe": "6.0.0", - "System.Security.Cryptography.Pkcs": "7.0.3", - "System.Text.Encoding.CodePages": "7.0.0" - } - }, "Mono.TextTemplating": { "type": "Transitive", "resolved": "3.0.0", @@ -808,8 +808,8 @@ }, "System.Formats.Asn1": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "+nfpV0afLmvJW8+pLlHxRjz3oZJw4fkyU9MMEaMhCsHi/SN9bGF9q79ROubDiwTiCHezmK0uCWkPP7tGFP/4yg==" + "resolved": "8.0.1", + "contentHash": "XqKba7Mm/koKSjKMfW82olQdmfbI5yqeoLV/tidRp7fbh5rmHAQ5raDI/7SU0swTzv+jgqtUGkzmFxuUg0it1A==" }, "System.IO.Hashing": { "type": "Transitive", @@ -850,16 +850,8 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "7.0.3", - "contentHash": "yhwEHH5Gzl/VoADrXtt5XC95OFoSjNSWLHNutE7GwdOgefZVRvEXRSooSpL8HHm3qmdd9epqzsWg28UJemt22w==", - "dependencies": { - "System.Formats.Asn1": "7.0.0" - } - }, - "System.Text.Encoding.CodePages": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "LSyCblMpvOe0N3E+8e0skHcrIhgV2huaNcjUUEa8hRtgEAm36aGkRoC8Jxlb6Ra6GSfF29ftduPNywin8XolzQ==" + "resolved": "8.0.1", + "contentHash": "CoCRHFym33aUSf/NtWSVSZa99dkd0Hm7OCZUxORBjRB16LNhIEOf8THPqzIYlvKM0nNDAPTRBa1FxEECrgaxxA==" }, "System.Threading.Channels": { "type": "Transitive",