[{"name":"Email.Html","comment":" Only html tags that are supported by major all email clients are listed here.\nIf you need something not that's included (and potentially not universally supported) use [`node`](#node).\n\nThese sources were used to determine what should be included:\n<https://www.campaignmonitor.com/css/color-background/background/>\n<https://www.pinpointe.com/blog/email-campaign-html-and-css-support>\n<https://www.caniemail.com/>\n\nOpen an issue on github if something is missing or incorrectly included.\n\n\n# Html tags\n\n@docs a, b, br, div, font, h1, h2, h3, h4, h5, h6, hr, img, label, li, node, ol, p, span, strong, table, td, text, th, tr, u, ul, Html, Attribute\n\n\n# Inline images\n\n@docs inlineGifImg, inlineJpgImg, inlinePngImg\n\n\n# Convert\n\n@docs toHtml, toString\n\n","unions":[],"aliases":[{"name":"Attribute","comment":" An HTML attribute\n","args":[],"type":"Internal.Attribute"},{"name":"Html","comment":" ","args":[],"type":"Internal.Html"}],"values":[{"name":"a","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"b","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"br","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"div","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"font","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"h1","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"h2","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"h3","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"h4","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"h5","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"h6","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"hr","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"img","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"inlineGifImg","comment":" If you want to embed a gif within the email body, use this function.\nThe normal approach of using a base64 string as the image src doesn't always with emails.\n\nNote that [some email clients](https://www.caniemail.com/search/?s=gif) won't animate the gif.\n\n","type":"Bytes.Bytes -> List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"inlineJpgImg","comment":" If you want to embed a jpg image within the email body, use this function.\nThe normal approach of using a base64 string as the image src doesn't always with emails.\n","type":"Bytes.Bytes -> List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"inlinePngImg","comment":" If you want to embed a png image within the email body, use this function.\nThe normal approach of using a base64 string as the image src doesn't always work with emails.\n","type":"Bytes.Bytes -> List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"label","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"li","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"node","comment":" This allows you to create html tags not included in this module (at the risk of it not rendering correctly in some email clients).\n","type":"String.String -> List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"ol","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"p","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"span","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"strong","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"table","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"td","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"text","comment":" ","type":"String.String -> Email.Html.Html"},{"name":"th","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"toHtml","comment":" Convert [`Email.Html.Html`](#Html) into normal a [`Html`](https://package.elm-lang.org/packages/elm/html/latest/Html). Useful if you want to preview your email content.\n","type":"Email.Html.Html -> Html.Html msg"},{"name":"toString","comment":" Convert [`Email.Html.Html`](#Html) into normal html text.\n\n    Email.Html.toString myHtml --> \"<div>Hello!</div>\"\n\n","type":"Email.Html.Html -> String.String"},{"name":"tr","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"u","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"},{"name":"ul","comment":" ","type":"List.List Email.Html.Attribute -> List.List Email.Html.Html -> Email.Html.Html"}],"binops":[]},{"name":"Email.Html.Attributes","comment":" Only html attributes that are supported by all major email clients are listed here.\nIf you need something not that's included (and potentially not universally supported) use [`attribute`](#attribute) or [`style`](#style).\n\nThese sources were used to determine what should be included:\n<https://www.campaignmonitor.com/css/color-background/background/>\n<https://www.pinpointe.com/blog/email-campaign-html-and-css-support>\n<https://www.caniemail.com/>\n\nOpen an issue on github if something is missing or incorrectly included.\n\n\n# Attributes and styles\n\n@docs alt, attribute, backgroundColor, border, borderBottom, borderBottomColor, borderBottomStyle, borderBottomWidth, borderColor, borderLeft, borderLeftColor, borderLeftStyle, borderLeftWidth, borderRadius, borderRight, borderRightColor, borderRightStyle, borderRightWidth, borderStyle, borderTop, borderTopColor, borderWidth, color, fontFamily, fontSize, fontStyle, fontVariant, height, href, letterSpacing, lineHeight, padding, paddingBottom, paddingLeft, paddingRight, paddingTop, src, style, textAlign, verticalAlign, width\n\n","unions":[],"aliases":[],"values":[{"name":"alt","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"attribute","comment":" Use this if there's a attribute you want to add that isn't present in this module.\nNote that there's a risk that it isn't supported by some email clients.\n","type":"String.String -> String.String -> Email.Html.Attribute"},{"name":"backgroundColor","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"border","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderBottom","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderBottomColor","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderBottomStyle","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderBottomWidth","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderColor","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderLeft","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderLeftColor","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderLeftStyle","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderLeftWidth","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderRadius","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderRight","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderRightColor","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderRightStyle","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderRightWidth","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderStyle","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderTop","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderTopColor","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"borderWidth","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"color","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"fontFamily","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"fontSize","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"fontStyle","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"fontVariant","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"height","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"href","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"letterSpacing","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"lineHeight","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"padding","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"paddingBottom","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"paddingLeft","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"paddingRight","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"paddingTop","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"src","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"style","comment":" Use this if there's a style you want to add that isn't present in this module.\nNote that there's a risk that it isn't supported by some email clients.\n","type":"String.String -> String.String -> Email.Html.Attribute"},{"name":"textAlign","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"verticalAlign","comment":" ","type":"String.String -> Email.Html.Attribute"},{"name":"width","comment":" ","type":"String.String -> Email.Html.Attribute"}],"binops":[]},{"name":"EmailAddress","comment":"\n\n@docs EmailAddress, fromString, toString\n\n","unions":[{"name":"EmailAddress","comment":" The type of an email address\n","args":[],"cases":[]}],"aliases":[],"values":[{"name":"fromString","comment":" Parse an email address from a String.\nNote that this will also convert all the characters to lowercase.\nThis is done because email addresses are case insensitive.\nIf the email wasn't converted to all lowercase you could end up with this gotcha `Email.fromString a@a.com /= Email.fromString A@a.com`\n","type":"String.String -> Maybe.Maybe EmailAddress.EmailAddress"},{"name":"toString","comment":" Render Email to a String\n","type":"EmailAddress.EmailAddress -> String.String"}],"binops":[]},{"name":"Postmark","comment":"\n\n\n# Sending emails\n\n@docs apiKey, ApiKey, sendEmail, sendEmails, sendEmailTask, sendEmailsTask, Email, EmailBody, MessageStream, PostmarkError_, SendEmailError, SendEmailsError\n\n\n# Email attachments\n\n@docs Attachments, noAttachments, attachments\n\n","unions":[{"name":"ApiKey","comment":" A SendGrid API key. In order to send an email you must have one of these (see the readme for how to get one).\n","args":[],"cases":[]},{"name":"Attachments","comment":" A group of email attachments.\n\nNote that the contents of each attachment has to be base64 encoded. This can be slow for large attachments so reuse the same `Attachment` for multiple emails if possible.\n\n","args":[],"cases":[]},{"name":"EmailBody","comment":"\n\n    What kind of email content are you sending? Just plain text (TextBody), HTML (HtmlBody), or both (HtmlAndTextBody).\n    If you do send HTML, it's recommended to also send a plain text version for accessibility and it might reduce the odds of the email getting blocked by a spam filter.\n\n    Note that email clients are quite limited in what html features are supported!\n    To avoid accidentally using html that's unsupported by some email clients, the `Email.Html` and `Email.Html.Attributes` modules only define tags and attributes with universal support.\n    You can still use `Email.Html.node` and `Email.Html.Attributes.attribute` if you want something that might not be universally supported though.\n\n","args":[],"cases":[["HtmlBody",["Email.Html.Html"]],["TextBody",["String.String"]],["HtmlAndTextBody",["Email.Html.Html","String.String"]]]},{"name":"MessageStream","comment":" What type of email are you sending? `TransactionalEmail` is for high priority email intended for a single recipient (a login link for example). `BroadcastEmail` is for emails to be sent to many recipients (a product announcement or a terms of service change). `OtherMessageStream` is in case you have created additional message streams.\n","args":[],"cases":[["TransactionalEmail",[]],["BroadcastEmail",[]],["OtherMessageStream",["String.String"]]]},{"name":"SendEmailError","comment":" Possible errors we might get back when trying to send an email.\nSome are just normal HTTP errors and others are specific to the Postmark API.\n","args":[],"cases":[["UnknownError",["{ statusCode : Basics.Int, body : String.String }"]],["PostmarkError",["Postmark.PostmarkError_"]],["NetworkError",[]],["Timeout",[]],["BadUrl",["String.String"]]]},{"name":"SendEmailsError","comment":" Possible errors we might get back when trying to send multiple emails.\nSome are just normal HTTP errors and others are specific to the Postmark API.\n","args":[],"cases":[["UnknownError_",["{ statusCode : Basics.Int, body : String.String }"]],["PostmarkErrors",["List.Nonempty.Nonempty Postmark.PostmarkError_"]],["NetworkError_",[]],["Timeout_",[]],["BadUrl_",["String.String"]]]}],"aliases":[{"name":"Email","comment":" Configuration for the email(s) you want to send.\n\n    { from = { name = \"ascii-collab\", email = asciiCollabEmail }\n    , to = List.Nonempty.fromElement { name = \"\", email = recipient }\n    , subject = NonemptyString 'H' \"ello!\"\n    , body = Postmark.TextBody \"Hello! Here's your login code 123123\"\n    , messageStream = Postmark.TransactionalEmail\n    , attachments = Postmark.noAttachments\n    }\n\n","args":[],"type":"{ from : { name : String.String, email : EmailAddress.EmailAddress }, to : List.Nonempty.Nonempty { name : String.String, email : EmailAddress.EmailAddress }, subject : String.Nonempty.NonemptyString, body : Postmark.EmailBody, messageStream : Postmark.MessageStream, attachments : Postmark.Attachments }"},{"name":"PostmarkError_","comment":" Error message you can potentially get from Postmark\n","args":[],"type":"{ errorCode : Basics.Int, message : String.String, to : List.List EmailAddress.EmailAddress }"}],"values":[{"name":"apiKey","comment":" Create an API key from a raw string (see the readme for how to get one).\n","type":"String.String -> Postmark.ApiKey"},{"name":"attachments","comment":" Create attachments to be shown at the bottom of an email. If you want to have inline image attachments, use `Email.Html.inlineGifImg`, `Email.Html.inlineJpgImg`, or `Email.Html.inlinePngImg`\n\nNote that the contents of each attachment has to be base64 encoded. This can be slow for large attachments so you might want to reuse the same `Attachment` for multiple emails if possible.\n\n","type":"Dict.Dict String.String { content : Bytes.Bytes, mimeType : String.String } -> Postmark.Attachments"},{"name":"noAttachments","comment":" Don't include any attachments in the email.\n","type":"Postmark.Attachments"},{"name":"sendEmail","comment":" Send an email\n\n    import EmailAddress exposing (EmailAddress)\n    import List.Nonempty\n    import Postmark\n\n    {-| An email to be sent to a recipient's email address.\n    -}\n    email : EmailAddress -> Cmd Msg\n    email recipient =\n        Postmark.sendEmail\n            SentEmail\n            postmarkApiKey\n            { from = { name = \"ascii-collab\", email = asciiCollabEmail }\n            , to = List.Nonempty.fromElement { name = \"\", email = recipient }\n            , subject = subject\n            , body = Postmark.TextBody \"Hello! Here's your login code 123123\"\n            , messageStream = Postmark.TransactionalEmail\n            , attachments = Postmark.noAttachments\n            }\n\n","type":"(Result.Result Postmark.SendEmailError () -> msg) -> Postmark.ApiKey -> Postmark.Email -> Platform.Cmd.Cmd msg"},{"name":"sendEmailTask","comment":" Send an email (but as a `Task` instead of a `Cmd`)\n\n    import EmailAddress exposing (EmailAddress)\n    import List.Nonempty exposing (Nonempty)\n    import Postmark\n    import Task exposing (Task)\n\n    {-| An email to be sent to a recipient's email address.\n    -}\n    email : EmailAddress -> Task Postmark.SendEmailError ()\n    email recipient =\n        Postmark.sendEmailTask\n            postmarkApiKey\n            { from = { name = \"ascii-collab\", email = asciiCollabEmail }\n            , to = List.Nonempty.fromElement { name = \"\", email = recipient }\n            , subject = subject\n            , body = Postmark.TextBody \"Hello! Here's your login code: 123123\"\n            , messageStream = Postmark.TransactionalEmail\n            , attachments = Postmark.noAttachments\n            }\n\n","type":"Postmark.ApiKey -> Postmark.Email -> Task.Task Postmark.SendEmailError ()"},{"name":"sendEmails","comment":" Send multiple emails in a single API request. See more here <https://postmarkapp.com/developer/user-guide/send-email-with-api/batch-emails>\n","type":"(Result.Result Postmark.SendEmailsError () -> msg) -> Postmark.ApiKey -> List.Nonempty.Nonempty Postmark.Email -> Platform.Cmd.Cmd msg"},{"name":"sendEmailsTask","comment":" Task version of `sendEmails`\n","type":"Postmark.ApiKey -> List.Nonempty.Nonempty Postmark.Email -> Task.Task Postmark.SendEmailsError ()"}],"binops":[]},{"name":"SendGrid","comment":"\n\n@docs ApiKey, apiKey, textEmail, htmlEmail, addCc, addBcc, addAttachments, sendEmail, sendEmailTask, Email, Error, ErrorMessage, ErrorMessage403\n\n","unions":[{"name":"ApiKey","comment":" A SendGrid API key. In order to send an email you must have one of these (see the readme for how to get one).\n","args":[],"cases":[]},{"name":"Email","comment":" ","args":[],"cases":[]},{"name":"Error","comment":" Possible error codes we might get back when trying to send an email.\nSome are just normal HTTP errors and others are specific to the SendGrid API.\n","args":[],"cases":[["StatusCode400",["List.List SendGrid.ErrorMessage"]],["StatusCode401",["List.List SendGrid.ErrorMessage"]],["StatusCode403",["{ errors : List.List SendGrid.ErrorMessage403, id : Maybe.Maybe String.String }"]],["StatusCode413",["List.List SendGrid.ErrorMessage"]],["UnknownError",["{ statusCode : Basics.Int, body : String.String }"]],["NetworkError",[]],["Timeout",[]],["BadUrl",["String.String"]]]}],"aliases":[{"name":"ErrorMessage","comment":" The content of a generic SendGrid error.\n","args":[],"type":"{ field : Maybe.Maybe String.String, message : String.String, errorId : Maybe.Maybe String.String }"},{"name":"ErrorMessage403","comment":" The content of a 403 status code error.\n","args":[],"type":"{ message : Maybe.Maybe String.String, field : Maybe.Maybe String.String, help : Maybe.Maybe String.String }"}],"values":[{"name":"addAttachments","comment":" Attach files to the email. These will usually appear at the bottom of the email.\n\n    import Bytes exposing (Bytes)\n    import SendGrid\n\n    attachPngImage : String -> Bytes -> Email -> Email\n    attachPngImage name image email =\n        SendGrid.addAttachments\n            (Dict.fromList\n                [ ( name ++ \".png\"\n                  , { content = image\n                    , mimeType = \"image/png\"\n                    }\n                  )\n                ]\n            )\n            email\n\nIf you want to include an image file within the body of your email, use `Email.Html.inlinePngImg`, `Email.Html.inlineJpegImg`, or `Email.Html.inlineGifImg` instead.\n\n","type":"Dict.Dict String.String { content : Bytes.Bytes, mimeType : String.String } -> SendGrid.Email -> SendGrid.Email"},{"name":"addBcc","comment":" Add a list of [BCC](https://en.wikipedia.org/wiki/Blind_carbon_copy) recipients.\n","type":"List.List EmailAddress.EmailAddress -> SendGrid.Email -> SendGrid.Email"},{"name":"addCc","comment":" Add a list of [CC](https://en.wikipedia.org/wiki/Carbon_copy) recipients.\n","type":"List.List EmailAddress.EmailAddress -> SendGrid.Email -> SendGrid.Email"},{"name":"apiKey","comment":" Create an API key from a raw string (see the readme for how to get one).\n","type":"String.String -> SendGrid.ApiKey"},{"name":"htmlEmail","comment":" Create an email that contains html.\n\n    import EmailAddress\n    import List.Nonempty\n    import Sendgrid\n    import String.Nonempty exposing (NonemptyString)\n\n    {-| An email to be sent to a recipient's email address.\n    -}\n    email : (Result SendGrid.Error () -> msg) -> EmailAddress -> SendGrid.ApiKey -> Cmd msg\n    email msg recipient apiKey =\n        SendGrid.textEmail\n            { subject = NonemptyString 'S' \"ubject\"\n            , to = List.Nonempty.fromElement recipient\n            , content = NonemptyString 'H' \"i!\"\n            , nameOfSender = \"Sender Name\"\n            , emailAddressOfSender = senderEmailAddress\n            }\n            |> SendGrid.sendEmail msg apiKey\n\nNote that email clients are quite limited in what html features are supported!\nTo avoid accidentally using html that's unsupported by some email clients, the `Email.Html` and `Email.Html.Attributes` modules only define tags and attributes with universal support.\nYou can still use `Email.Html.node` and `Email.Html.Attributes.attribute` if you want something that might not be universally supported though.\n\n","type":"{ subject : String.Nonempty.NonemptyString, content : Email.Html.Html, to : List.Nonempty.Nonempty EmailAddress.EmailAddress, nameOfSender : String.String, emailAddressOfSender : EmailAddress.EmailAddress } -> SendGrid.Email"},{"name":"sendEmail","comment":" Send an email using the SendGrid API.\n","type":"(Result.Result SendGrid.Error () -> msg) -> SendGrid.ApiKey -> SendGrid.Email -> Platform.Cmd.Cmd msg"},{"name":"sendEmailTask","comment":" Send an email using the SendGrid API. This is the task version of [sendEmail](#sendEmail).\n","type":"SendGrid.ApiKey -> SendGrid.Email -> Task.Task SendGrid.Error ()"},{"name":"textEmail","comment":" Create an email that only contains plain text.\n\n    import EmailAddress\n    import List.Nonempty\n    import Sendgrid\n    import String.Nonempty exposing (NonemptyString)\n\n    {-| An email to be sent to a recipient's email address.\n    -}\n    email : EmailAddress -> SendGrid.Email\n    email recipient =\n        SendGrid.textEmail\n            { subject = NonemptyString 'S' \"ubject\"\n            , to = List.Nonempty.fromElement recipient\n            , content = NonemptyString 'H' \"i!\"\n            , nameOfSender = \"test name\"\n            , emailAddressOfSender = senderEmailAddress\n            }\n\n","type":"{ subject : String.Nonempty.NonemptyString, content : String.Nonempty.NonemptyString, to : List.Nonempty.Nonempty EmailAddress.EmailAddress, nameOfSender : String.String, emailAddressOfSender : EmailAddress.EmailAddress } -> SendGrid.Email"}],"binops":[]}]