-module(sendr@message). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/sendr/message.gleam"). -export([new/0, set_from/2, set_reply_to/2, set_to/2, set_cc/2, set_bcc/2, set_subject/2, set_attachments/2, set_body/2]). -export_type([message/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC( " A simple message to be used with Mail Submission Agents. We do not adhere\n" " to specific RFC guidelines. E.g. Reply-To, Cc and Bcc are not able to\n" " utilize Group-addresses.\n" ). -type message() :: {message, gleam@option:option(sendr@message@mailbox:mailbox()), gleam@option:option(list(sendr@message@mailbox:mailbox())), gleam@option:option(list(sendr@message@mailbox:mailbox())), gleam@option:option(list(sendr@message@mailbox:mailbox())), gleam@option:option(list(sendr@message@mailbox:mailbox())), gleam@option:option(binary()), list(sendr@message@attachment:attachment()), sendr@message@body:body()}. -file("src/sendr/message.gleam", 25). ?DOC(" Creates a fresh message that is empty.\n"). -spec new() -> message(). new() -> {message, none, none, none, none, none, none, [], {body, none, none}}. -file("src/sendr/message.gleam", 42). ?DOC( " Specifies the author(s) of the message, that is, the mailbox(es) of the\n" " person(s) or system(s) responsible for the writing of the message.\n" "\n" " See: [RFC 5322, section 3.6.2](https://tools.ietf.org/html/rfc5322#section-3.6.2).\n" ). -spec set_from(message(), sendr@message@mailbox:mailbox()) -> message(). set_from(Message, Mailbox) -> {message, {some, Mailbox}, erlang:element(3, Message), erlang:element(4, Message), erlang:element(5, Message), erlang:element(6, Message), erlang:element(7, Message), erlang:element(8, Message), erlang:element(9, Message)}. -file("src/sendr/message.gleam", 50). ?DOC( " Indicates the mailbox(es) to which the author of the message suggests\n" " that replies be sent.\n" "\n" " See: [RFC 5322, section 3.6.2](https://tools.ietf.org/html/rfc5322#section-3.6.2).\n" ). -spec set_reply_to(message(), list(sendr@message@mailbox:mailbox())) -> message(). set_reply_to(Message, Mailboxes) -> {message, erlang:element(2, Message), {some, Mailboxes}, erlang:element(4, Message), erlang:element(5, Message), erlang:element(6, Message), erlang:element(7, Message), erlang:element(8, Message), erlang:element(9, Message)}. -file("src/sendr/message.gleam", 60). ?DOC( " Contains the address(es) of the primary recipient(s) of the message.\n" "\n" " See: [RFC 5322, section 3.6.3](https://tools.ietf.org/html/rfc5322#section-3.6.3).\n" ). -spec set_to(message(), list(sendr@message@mailbox:mailbox())) -> message(). set_to(Message, Mailboxes) -> {message, erlang:element(2, Message), erlang:element(3, Message), {some, Mailboxes}, erlang:element(5, Message), erlang:element(6, Message), erlang:element(7, Message), erlang:element(8, Message), erlang:element(9, Message)}. -file("src/sendr/message.gleam", 68). ?DOC( " (Carbon Copy) Contains the addresses of others who are to receive the\n" " message, though the content of the message may not be directed at them.\n" "\n" " See: [RFC 5322, section 3.6.3](https://tools.ietf.org/html/rfc5322#section-3.6.3).\n" ). -spec set_cc(message(), list(sendr@message@mailbox:mailbox())) -> message(). set_cc(Message, Mailboxes) -> {message, erlang:element(2, Message), erlang:element(3, Message), erlang:element(4, Message), {some, Mailboxes}, erlang:element(6, Message), erlang:element(7, Message), erlang:element(8, Message), erlang:element(9, Message)}. -file("src/sendr/message.gleam", 77). ?DOC( " (Blind Carbon Copy) Contains addresses of recipients of the message\n" " whose addresses are not to be revealed to other recipients of the\n" " message.\n" "\n" " See: [RFC 5322, section 3.6.3](https://tools.ietf.org/html/rfc5322#section-3.6.3).\n" ). -spec set_bcc(message(), list(sendr@message@mailbox:mailbox())) -> message(). set_bcc(Message, Mailboxes) -> {message, erlang:element(2, Message), erlang:element(3, Message), erlang:element(4, Message), erlang:element(5, Message), {some, Mailboxes}, erlang:element(7, Message), erlang:element(8, Message), erlang:element(9, Message)}. -file("src/sendr/message.gleam", 88). ?DOC( " Sets the subject of the message.\n" "\n" " The subject is a brief summary or title of the message content. It is\n" " typically displayed in the recipient's mailbox and helps them understand the\n" " purpose or topic of the message.\n" "\n" " See: [RFC 5322, section 3.6.5](https://tools.ietf.org/html/rfc5322#section-3.6.5).\n" ). -spec set_subject(message(), binary()) -> message(). set_subject(Message, Subject) -> {message, erlang:element(2, Message), erlang:element(3, Message), erlang:element(4, Message), erlang:element(5, Message), erlang:element(6, Message), {some, Subject}, erlang:element(8, Message), erlang:element(9, Message)}. -file("src/sendr/message.gleam", 98). ?DOC( " Set attachments on the message, replacing any existing attachments.\n" "\n" " Attachments allow the sender to include additional files or data with the\n" " message. This function replaces the list of existing attachments in the message.\n" "\n" " See: [RFC 2045](https://tools.ietf.org/html/rfc2045).\n" ). -spec set_attachments(message(), list(sendr@message@attachment:attachment())) -> message(). set_attachments(Message, Attachments) -> {message, erlang:element(2, Message), erlang:element(3, Message), erlang:element(4, Message), erlang:element(5, Message), erlang:element(6, Message), erlang:element(7, Message), Attachments, erlang:element(9, Message)}. -file("src/sendr/message.gleam", 108). ?DOC( " Set the body of the message, replacing the existing body.\n" "\n" " See: [RFC 2045](https://tools.ietf.org/html/rfc2045).\n" ). -spec set_body(message(), sendr@message@body:body()) -> message(). set_body(Message, Body) -> {message, erlang:element(2, Message), erlang:element(3, Message), erlang:element(4, Message), erlang:element(5, Message), erlang:element(6, Message), erlang:element(7, Message), erlang:element(8, Message), Body}.