MultipartHelper
extends AbstractHelper
in package
Provides various routines to manipulate and create multipart messages from an existing message (e.g. to make space for attachments in a message, or to change a simple message to a multipart/alternative one, etc...)
Tags
Table of Contents
- $mimePartFactory : IMimePartFactory
- $uuEncodedPartFactory : IUUEncodedPartFactory
- $genericHelper : GenericHelper
- __construct() : mixed
- createAlternativeContentPart() : IMimePart
- Creates a new mime part as a multipart/alternative and assigns the passed $contentPart as a part below it before returning it.
- createAndAddPartForAttachment() : mixed
- Creates and adds a IMimePart for the passed content and options as an attachment.
- createContentPartForMimeType() : IMimePart
- Creates a new content part for the passed mimeType and charset, making space by creating a multipart/alternative if needed
- createMultipartRelatedPartForInlineChildrenOf() : IMimePart
- Creates a multipart/related part out of 'inline' children of $parent and returns it.
- enforceMime() : mixed
- Enforces the message to be a mime message for a non-mime (e.g. uuencoded or unspecified) message. If the message has uuencoded attachments, sets up the message as a multipart/mixed message and creates a separate content part.
- findOtherContentPartFor() : IMimePart
- Finds an alternative inline part in the message and returns it if one exists.
- getContentPartContainerFromAlternative() : bool|IMimePart
- Searches the passed $alternativePart for a part with the passed mime type and returns its parent.
- getUniqueBoundary() : string
- Creates and returns a unique boundary.
- moveAllNonMultiPartsToMessageExcept() : self
- Moves all parts under $from into this message except those with a content-type equal to $exceptMimeType. If the message is not a multipart/mixed message, it is set to multipart/mixed first.
- removeAllContentPartsByMimeType() : bool
- Removes the content part of the message with the passed mime type. If there is a remaining content part and it is an alternative part of the main message, the content part is moved to the message part.
- removeAllContentPartsFromAlternative() : bool
- Removes all parts of $mimeType from $alternativePart.
- removePartByMimeType() : bool
- Removes the 'inline' part with the passed contentType, at the given index defaulting to the first
- setContentPartForMimeType() : self
- Either creates a mime part or sets the existing mime part with the passed mimeType to $strongOrHandle.
- setMessageAsAlternative() : self
- Sets the passed message as multipart/alternative.
- setMessageAsMixed() : self
- Sets the passed message as multipart/mixed.
- setMimeHeaderBoundaryOnPart() : self
- Creates a unique mime boundary and assigns it to the passed part's Content-Type header with the passed mime type.
Properties
$mimePartFactory
protected
IMimePartFactory
$mimePartFactory
to create parts for attachments/content
$uuEncodedPartFactory
protected
IUUEncodedPartFactory
$uuEncodedPartFactory
to create parts for attachments
$genericHelper
private
GenericHelper
$genericHelper
a GenericHelper instance
Methods
__construct()
public
__construct(IMimePartFactory $mimePartFactory, IUUEncodedPartFactory $uuEncodedPartFactory, GenericHelper $genericHelper) : mixed
Parameters
- $mimePartFactory : IMimePartFactory
- $uuEncodedPartFactory : IUUEncodedPartFactory
- $genericHelper : GenericHelper
Return values
mixed —createAlternativeContentPart()
Creates a new mime part as a multipart/alternative and assigns the passed $contentPart as a part below it before returning it.
public
createAlternativeContentPart(IMessage $message, IMessagePart $contentPart) : IMimePart
Parameters
- $message : IMessage
- $contentPart : IMessagePart
Return values
IMimePart —the alternative part
createAndAddPartForAttachment()
Creates and adds a IMimePart for the passed content and options as an attachment.
public
createAndAddPartForAttachment(IMessage $message, string|resource|StreamInterface $resource, string $mimeType, string $disposition[, string|null $filename = null ][, string $encoding = 'base64' ]) : mixed
Parameters
- $message : IMessage
- $resource : string|resource|StreamInterface
- $mimeType : string
- $disposition : string
- $filename : string|null = null
- $encoding : string = 'base64'
Return values
mixed —createContentPartForMimeType()
Creates a new content part for the passed mimeType and charset, making space by creating a multipart/alternative if needed
public
createContentPartForMimeType(IMessage $message, string $mimeType, string $charset) : IMimePart
Parameters
- $message : IMessage
- $mimeType : string
- $charset : string
Return values
IMimePart —createMultipartRelatedPartForInlineChildrenOf()
Creates a multipart/related part out of 'inline' children of $parent and returns it.
public
createMultipartRelatedPartForInlineChildrenOf(IMimePart $parent) : IMimePart
Parameters
- $parent : IMimePart
Return values
IMimePart —enforceMime()
Enforces the message to be a mime message for a non-mime (e.g. uuencoded or unspecified) message. If the message has uuencoded attachments, sets up the message as a multipart/mixed message and creates a separate content part.
public
enforceMime(IMessage $message) : mixed
Parameters
- $message : IMessage
Return values
mixed —findOtherContentPartFor()
Finds an alternative inline part in the message and returns it if one exists.
public
findOtherContentPartFor(IMessage $message, string $mimeType) : IMimePart
If the passed $mimeType is text/plain, searches for a text/html part. Otherwise searches for a text/plain part to return.
Parameters
- $message : IMessage
- $mimeType : string
Return values
IMimePart —or null if not found
getContentPartContainerFromAlternative()
Searches the passed $alternativePart for a part with the passed mime type and returns its parent.
public
getContentPartContainerFromAlternative(string $mimeType, IMimePart $alternativePart) : bool|IMimePart
Used for alternative mime types that have a multipart/mixed or multipart/related child containing a content part of $mimeType, where the whole mixed/related part should be removed.
Parameters
- $mimeType : string
-
the content-type to find below $alternativePart
- $alternativePart : IMimePart
-
The multipart/alternative part to look under
Return values
bool|IMimePart —false if a part is not found
getUniqueBoundary()
Creates and returns a unique boundary.
public
getUniqueBoundary(string $mimeType) : string
Parameters
- $mimeType : string
-
first 3 characters of a multipart type are used, e.g. REL for relative or ALT for alternative
Return values
string —moveAllNonMultiPartsToMessageExcept()
Moves all parts under $from into this message except those with a content-type equal to $exceptMimeType. If the message is not a multipart/mixed message, it is set to multipart/mixed first.
public
moveAllNonMultiPartsToMessageExcept(IMessage $message, IMimePart $from, string $exceptMimeType) : self
Parameters
Return values
self —removeAllContentPartsByMimeType()
Removes the content part of the message with the passed mime type. If there is a remaining content part and it is an alternative part of the main message, the content part is moved to the message part.
public
removeAllContentPartsByMimeType(IMessage $message, string $mimeType[, bool $keepOtherContent = false ]) : bool
If the content part is part of an alternative part beneath the message, the alternative part is replaced by the remaining content part, optionally keeping other parts if $keepOtherContent is set to true.
Parameters
- $message : IMessage
- $mimeType : string
- $keepOtherContent : bool = false
Return values
bool —true on success
removeAllContentPartsFromAlternative()
Removes all parts of $mimeType from $alternativePart.
public
removeAllContentPartsFromAlternative(IMessage $message, string $mimeType, IMimePart $alternativePart, bool $keepOtherContent) : bool
If $alternativePart contains a multipart/mixed or multipart/relative part with other parts of different content-types, the multipart part is removed, and parts of different content-types can optionally be moved to the main message part.
Parameters
Return values
bool —removePartByMimeType()
Removes the 'inline' part with the passed contentType, at the given index defaulting to the first
public
removePartByMimeType(IMessage $message, string $mimeType, int $index) : bool
Parameters
- $message : IMessage
- $mimeType : string
- $index : int
Return values
bool —true on success
setContentPartForMimeType()
Either creates a mime part or sets the existing mime part with the passed mimeType to $strongOrHandle.
public
setContentPartForMimeType(IMessage $message, string $mimeType, string|resource $stringOrHandle, string $charset) : self
Parameters
- $message : IMessage
- $mimeType : string
- $stringOrHandle : string|resource
- $charset : string
Return values
self —setMessageAsAlternative()
Sets the passed message as multipart/alternative.
public
setMessageAsAlternative(IMessage $message) : self
If the message has content, a new part is created and added as a child of the message. The message's content and content headers are moved to the new part.
Parameters
- $message : IMessage
Return values
self —setMessageAsMixed()
Sets the passed message as multipart/mixed.
public
setMessageAsMixed(IMessage $message) : self
If the message has content, a new part is created and added as a child of the message. The message's content and content headers are moved to the new part.
Parameters
- $message : IMessage
Return values
self —setMimeHeaderBoundaryOnPart()
Creates a unique mime boundary and assigns it to the passed part's Content-Type header with the passed mime type.
public
setMimeHeaderBoundaryOnPart(IMimePart $part, string $mimeType) : self
Parameters
- $part : IMimePart
- $mimeType : string