go-mail/header.go

225 lines
7.1 KiB
Go
Raw Normal View History

// SPDX-FileCopyrightText: 2022-2023 The go-mail Authors
//
// SPDX-License-Identifier: MIT
2022-03-09 16:52:23 +01:00
package mail
// Header is a type wrapper for a string and represents email header fields in a Msg.
2022-03-09 16:52:23 +01:00
type Header string
// AddrHeader is a type wrapper for a string and represents email address headers fields in a Msg.
2022-03-10 16:19:51 +01:00
type AddrHeader string
2022-03-09 16:52:23 +01:00
// Importance is a type wrapper for an int and represents the level of importance or priority for a Msg.
2022-03-13 19:24:46 +01:00
type Importance int
2022-03-10 16:19:51 +01:00
const (
// HeaderContentDescription is the "Content-Description" header.
HeaderContentDescription Header = "Content-Description"
// HeaderContentDisposition is the "Content-Disposition" header.
HeaderContentDisposition Header = "Content-Disposition"
// HeaderContentID is the "Content-ID" header.
2022-03-14 10:29:53 +01:00
HeaderContentID Header = "Content-ID"
// HeaderContentLang is the "Content-Language" header.
2022-03-10 16:56:41 +01:00
HeaderContentLang Header = "Content-Language"
// HeaderContentLocation is the "Content-Location" header (RFC 2110).
// https://datatracker.ietf.org/doc/html/rfc2110#section-4.3
HeaderContentLocation Header = "Content-Location"
// HeaderContentTransferEnc is the "Content-Transfer-Encoding" header.
HeaderContentTransferEnc Header = "Content-Transfer-Encoding"
// HeaderContentType is the "Content-Type" header.
2022-03-10 16:56:41 +01:00
HeaderContentType Header = "Content-Type"
// HeaderDate represents the "Date" field.
// https://datatracker.ietf.org/doc/html/rfc822#section-5.1
2022-03-09 16:52:23 +01:00
HeaderDate Header = "Date"
// HeaderDispositionNotificationTo is the MDN header as described in RFC 8098.
// https://datatracker.ietf.org/doc/html/rfc8098#section-2.1
HeaderDispositionNotificationTo Header = "Disposition-Notification-To"
// HeaderImportance represents the "Importance" field.
2022-03-13 19:24:46 +01:00
HeaderImportance Header = "Importance"
// HeaderInReplyTo represents the "In-Reply-To" field.
HeaderInReplyTo Header = "In-Reply-To"
// HeaderListUnsubscribe is the "List-Unsubscribe" header field.
HeaderListUnsubscribe Header = "List-Unsubscribe"
// HeaderListUnsubscribePost is the "List-Unsubscribe-Post" header field.
HeaderListUnsubscribePost Header = "List-Unsubscribe-Post"
// HeaderMessageID represents the "Message-ID" field for message identification.
// https://datatracker.ietf.org/doc/html/rfc1036#section-2.1.5
2022-03-09 16:52:23 +01:00
HeaderMessageID Header = "Message-ID"
2022-03-10 16:19:51 +01:00
// HeaderMIMEVersion represents the "MIME-Version" field as per RFC 2045.
// https://datatracker.ietf.org/doc/html/rfc2045#section-4
2022-03-10 16:56:41 +01:00
HeaderMIMEVersion Header = "MIME-Version"
// HeaderOrganization is the "Organization" header field.
HeaderOrganization Header = "Organization"
// HeaderPrecedence is the "Precedence" header field.
2022-03-10 16:19:51 +01:00
HeaderPrecedence Header = "Precedence"
// HeaderPriority represents the "Priority" field.
2022-03-13 19:24:46 +01:00
HeaderPriority Header = "Priority"
// HeaderReferences is the "References" header field.
HeaderReferences Header = "References"
// HeaderReplyTo is the "Reply-To" header field.
HeaderReplyTo Header = "Reply-To"
// HeaderSubject is the "Subject" header field.
2022-03-10 16:19:51 +01:00
HeaderSubject Header = "Subject"
2022-03-13 19:24:46 +01:00
// HeaderUserAgent is the "User-Agent" header field.
HeaderUserAgent Header = "User-Agent"
// HeaderXAutoResponseSuppress is the "X-Auto-Response-Suppress" header field.
HeaderXAutoResponseSuppress Header = "X-Auto-Response-Suppress"
// HeaderXMailer is the "X-Mailer" header field.
HeaderXMailer Header = "X-Mailer"
// HeaderXMSMailPriority is the "X-MSMail-Priority" header field.
2022-03-13 19:24:46 +01:00
HeaderXMSMailPriority Header = "X-MSMail-Priority"
// HeaderXPriority is the "X-Priority" header field.
2022-03-13 19:24:46 +01:00
HeaderXPriority Header = "X-Priority"
2022-03-10 16:19:51 +01:00
)
const (
// HeaderBcc is the "Blind Carbon Copy" header field.
2022-03-10 16:19:51 +01:00
HeaderBcc AddrHeader = "Bcc"
// HeaderCc is the "Carbon Copy" header field.
2022-03-10 16:19:51 +01:00
HeaderCc AddrHeader = "Cc"
// HeaderEnvelopeFrom is the envelope FROM header field.
//
// It is generally not included in the mail body but only used by the Client for the communication with the
// SMTP server. If the Msg has no "FROM" address set in the mail body, the msgWriter will try to use the
// envelope from address, if this has been set for the Msg.
HeaderEnvelopeFrom AddrHeader = "EnvelopeFrom"
// HeaderFrom is the "From" header field.
2022-03-10 16:19:51 +01:00
HeaderFrom AddrHeader = "From"
// HeaderTo is the "Receipient" header field.
2022-03-10 16:19:51 +01:00
HeaderTo AddrHeader = "To"
2022-03-09 16:52:23 +01:00
)
2022-03-13 19:24:46 +01:00
const (
// ImportanceLow indicates a low level of importance or priority in a Msg.
2022-03-13 19:24:46 +01:00
ImportanceLow Importance = iota
// ImportanceNormal indicates a standard level of importance or priority for a Msg.
2022-03-13 19:24:46 +01:00
ImportanceNormal
// ImportanceHigh indicates a high level of importance or priority in a Msg.
2022-03-13 19:24:46 +01:00
ImportanceHigh
// ImportanceNonUrgent indicates a non-urgent level of importance or priority in a Msg.
2022-03-13 19:24:46 +01:00
ImportanceNonUrgent
// ImportanceUrgent indicates an urgent level of importance or priority in a Msg.
2022-03-13 19:24:46 +01:00
ImportanceUrgent
)
// NumString returns a numerical string representation of the Importance level.
//
// This method maps ImportanceHigh and ImportanceUrgent to "1", while ImportanceNonUrgent and ImportanceLow
// are mapped to "0". Other values return an empty string.
//
// Returns:
// - A string representing the numerical value of the Importance level ("1" or "0"), or an empty string
// if the Importance level is unrecognized.
2022-03-13 19:24:46 +01:00
func (i Importance) NumString() string {
switch i {
case ImportanceNonUrgent:
return "0"
case ImportanceLow:
return "0"
case ImportanceHigh:
return "1"
case ImportanceUrgent:
return "1"
default:
return ""
}
}
// XPrioString returns the X-Priority string representation of the Importance level.
//
// This method maps ImportanceHigh and ImportanceUrgent to "1", while ImportanceNonUrgent and ImportanceLow
// are mapped to "5". Other values return an empty string.
//
// Returns:
// - A string representing the X-Priority value of the Importance level ("1" or "5"), or an empty string
// if the Importance level is unrecognized.
2022-03-13 19:28:40 +01:00
func (i Importance) XPrioString() string {
switch i {
case ImportanceNonUrgent:
return "5"
case ImportanceLow:
return "5"
case ImportanceHigh:
return "1"
case ImportanceUrgent:
return "1"
default:
return ""
}
}
// String satisfies the fmt.Stringer interface for the Importance type and returns the string
// representation of the Importance level.
//
// This method provides a human-readable string for each Importance level.
//
// Returns:
// - A string representing the Importance level ("non-urgent", "low", "high", or "urgent"), or an empty
// string if the Importance level is unrecognized.
2022-03-13 19:24:46 +01:00
func (i Importance) String() string {
switch i {
case ImportanceNonUrgent:
return "non-urgent"
case ImportanceLow:
return "low"
case ImportanceHigh:
return "high"
case ImportanceUrgent:
return "urgent"
default:
return ""
}
}
// String satisfies the fmt.Stringer interface for the Header type and returns the string
// representation of the Header.
//
// Returns:
// - A string representing the Header.
func (h Header) String() string {
return string(h)
}
// String satisfies the fmt.Stringer interface for the AddrHeader type and returns the string
// representation of the AddrHeader.
//
// Returns:
// - A string representing the AddrHeader.
func (a AddrHeader) String() string {
return string(a)
}