Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
getHeaderParameter example
return
$payload
;
}
private
function
prepareAttachments
(
Email
$email
, ?string
$html
)
: array
{
$attachments
=
$inlines
=
[
]
;
foreach
(
$email
->
getAttachments
(
)
as
$attachment
)
{
$headers
=
$attachment
->
getPreparedHeaders
(
)
;
if
(
'inline' ===
$headers
->
getHeaderBody
(
'Content-Disposition'
)
)
{
// replace the cid with just a file name (the only supported way by Mailgun)
if
(
$html
)
{
$filename
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'filename'
)
;
$new
=
basename
(
$filename
)
;
$html
=
str_replace
(
'cid:'.
$filename
, 'cid:'.
$new
,
$html
)
;
$p
=
new
\
ReflectionProperty
(
$attachment
, 'filename'
)
;
$p
->
setValue
(
$attachment
,
$new
)
;
}
$inlines
[
]
=
$attachment
;
}
else
{
$attachments
[
]
=
$attachment
;
}
}
}
return
$payload
;
}
private
function
getAttachments
(
Email
$email
)
: array
{
$attachments
=
[
]
;
foreach
(
$email
->
getAttachments
(
)
as
$attachment
)
{
$headers
=
$attachment
->
getPreparedHeaders
(
)
;
$filename
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'filename'
)
;
$disposition
=
$headers
->
getHeaderBody
(
'Content-Disposition'
)
;
$att
=
[
'name' =>
$filename
,
'content' =>
$attachment
->
bodyToString
(
)
,
'content_type' =>
$headers
->
get
(
'Content-Type'
)
->
getBody
(
)
,
]
;
if
(
'inline' ===
$disposition
)
{
$att
[
'cid'
]
= 'cid:'.
$filename
;
}
$payload
[
'attachment'
]
=
$attachements
;
}
return
$payload
;
}
private
function
prepareAttachments
(
Email
$email
)
: array
{
$attachments
=
[
]
;
foreach
(
$email
->
getAttachments
(
)
as
$attachment
)
{
$headers
=
$attachment
->
getPreparedHeaders
(
)
;
$filename
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'filename'
)
;
$attachments
[
]
=
[
'name' =>
$filename
,
'type' =>
$headers
->
get
(
'Content-Type'
)
->
getBody
(
)
,
'content' =>
base64_encode
(
$attachment
->
bodyToString
(
)
)
,
]
;
}
return
$attachments
;
}
$payload
[
'MessageStream'
]
=
$this
->messageStream;
}
return
$payload
;
}
private
function
getAttachments
(
Email
$email
)
: array
{
$attachments
=
[
]
;
foreach
(
$email
->
getAttachments
(
)
as
$attachment
)
{
$headers
=
$attachment
->
getPreparedHeaders
(
)
;
$filename
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'filename'
)
;
$disposition
=
$headers
->
getHeaderBody
(
'Content-Disposition'
)
;
$att
=
[
'Name' =>
$filename
,
'Content' =>
$attachment
->
bodyToString
(
)
,
'ContentType' =>
$headers
->
get
(
'Content-Type'
)
->
getBody
(
)
,
]
;
if
(
'inline' ===
$disposition
)
{
$att
[
'ContentID'
]
= 'cid:'.
$filename
;
}
$payload
=
array_merge
(
$payload
,
$headersAndTags
)
;
}
return
$payload
;
}
private
function
prepareAttachments
(
Email
$email
)
: array
{
$attachments
=
[
]
;
foreach
(
$email
->
getAttachments
(
)
as
$attachment
)
{
$headers
=
$attachment
->
getPreparedHeaders
(
)
;
$filename
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'filename'
)
;
$att
=
[
'content' =>
str_replace
(
"\r\n", '',
$attachment
->
bodyToString
(
)
)
,
'name' =>
$filename
,
]
;
$attachments
[
]
=
$att
;
}
return
$attachments
;
}
$fields
[
$convertConf
]
=
$header
->
getBodyAsString
(
)
;
}
}
return
new
FormDataPart
(
$fields
)
;
}
private
function
attachmentsFormData
(
array &
$message
, Email
$email
)
: void
{
foreach
(
$email
->
getAttachments
(
)
as
$attachment
)
{
$headers
=
$attachment
->
getPreparedHeaders
(
)
;
$filename
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'filename'
)
;
$dataPart
=
new
DataPart
(
$attachment
->
getBody
(
)
,
$filename
,
$attachment
->
getMediaType
(
)
.'/'.
$attachment
->
getMediaSubtype
(
)
)
;
if
(
'inline' ===
$headers
->
getHeaderBody
(
'Content-Disposition'
)
)
{
$message
[
]
=
[
'inlineImage' =>
$dataPart
]
;
}
else
{
$message
[
]
=
[
'attachment' =>
$dataPart
]
;
}
}
}
$payload
=
array_merge
(
$payload
,
$headersAndTags
)
;
}
return
$payload
;
}
private
function
prepareAttachments
(
Email
$email
)
: array
{
$attachments
=
[
]
;
foreach
(
$email
->
getAttachments
(
)
as
$attachment
)
{
$headers
=
$attachment
->
getPreparedHeaders
(
)
;
$filename
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'filename'
)
;
$att
=
[
'content' =>
str_replace
(
"\r\n", '',
$attachment
->
bodyToString
(
)
)
,
'name' =>
$filename
,
]
;
$attachments
[
]
=
$att
;
}
return
$attachments
;
}
return
self::
addParts
(
$email
, \
array_slice
(
$parts
, 1
)
)
;
}
throw
new
RuntimeException
(
sprintf
(
'Unable to create an Email from an instance of "%s" as the body is too complex.',
get_debug_type
(
$message
)
)
)
;
}
private
static
function
createEmailFromTextPart
(
Message
$message
, TextPart
$part
)
: Email
{
if
(
'text' ===
$part
->
getMediaType
(
)
&& 'plain' ===
$part
->
getMediaSubtype
(
)
)
{
return
(
new
Email
(
clone
$message
->
getHeaders
(
)
)
)
->
text
(
$part
->
getBody
(
)
,
$part
->
getPreparedHeaders
(
)
->
getHeaderParameter
(
'Content-Type', 'charset'
)
?: 'utf-8'
)
;
}
if
(
'text' ===
$part
->
getMediaType
(
)
&& 'html' ===
$part
->
getMediaSubtype
(
)
)
{
return
(
new
Email
(
clone
$message
->
getHeaders
(
)
)
)
->
html
(
$part
->
getBody
(
)
,
$part
->
getPreparedHeaders
(
)
->
getHeaderParameter
(
'Content-Type', 'charset'
)
?: 'utf-8'
)
;
}
throw
new
RuntimeException
(
sprintf
(
'Unable to create an Email from an instance of "%s" as the body is too complex.',
get_debug_type
(
$message
)
)
)
;
}
private
static
function
createEmailFromAlternativePart
(
Message
$message
, AlternativePart
$part
)
: Email
{
$parts
=
$part
->
getParts
(
)
;
return
$recipients
;
}
private
function
prepareAttachments
(
Email
$email
)
: array
{
$attachments
=
[
]
;
foreach
(
$email
->
getAttachments
(
)
as
$attachment
)
{
$headers
=
$attachment
->
getPreparedHeaders
(
)
;
$filename
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'filename'
)
;
$att
=
[
'content' =>
base64_encode
(
$attachment
->
getBody
(
)
)
,
'filename' =>
$filename
,
]
;
if
(
'inline' ===
$headers
->
getHeaderBody
(
'Content-Disposition'
)
)
{
$att
[
'disposition'
]
= 'inline';
$att
[
'id'
]
=
$attachment
->
getContentId
(
)
;
}
$content
[
]
=
[
'type' => 'text/html', 'value' =>
$html
]
;
}
return
$content
;
}
private
function
getAttachments
(
Email
$email
)
: array
{
$attachments
=
[
]
;
foreach
(
$email
->
getAttachments
(
)
as
$attachment
)
{
$headers
=
$attachment
->
getPreparedHeaders
(
)
;
$filename
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'filename'
)
;
$disposition
=
$headers
->
getHeaderBody
(
'Content-Disposition'
)
;
$att
=
[
'content' =>
str_replace
(
"\r\n", '',
$attachment
->
bodyToString
(
)
)
,
'type' =>
$headers
->
get
(
'Content-Type'
)
->
getBody
(
)
,
'filename' =>
$filename
,
'disposition' =>
$disposition
,
]
;
if
(
'inline' ===
$disposition
)
{
$att
[
'content_id'
]
=
$filename
;
}
return
self::
addParts
(
$email
, \
array_slice
(
$parts
, 1
)
)
;
}
throw
new
RuntimeException
(
sprintf
(
'Unable to create an Email from an instance of "%s" as the body is too complex.',
get_debug_type
(
$message
)
)
)
;
}
private
static
function
createEmailFromTextPart
(
Message
$message
, TextPart
$part
)
: Email
{
if
(
'text' ===
$part
->
getMediaType
(
)
&& 'plain' ===
$part
->
getMediaSubtype
(
)
)
{
return
(
new
Email
(
clone
$message
->
getHeaders
(
)
)
)
->
text
(
$part
->
getBody
(
)
,
$part
->
getPreparedHeaders
(
)
->
getHeaderParameter
(
'Content-Type', 'charset'
)
?: 'utf-8'
)
;
}
if
(
'text' ===
$part
->
getMediaType
(
)
&& 'html' ===
$part
->
getMediaSubtype
(
)
)
{
return
(
new
Email
(
clone
$message
->
getHeaders
(
)
)
)
->
html
(
$part
->
getBody
(
)
,
$part
->
getPreparedHeaders
(
)
->
getHeaderParameter
(
'Content-Type', 'charset'
)
?: 'utf-8'
)
;
}
throw
new
RuntimeException
(
sprintf
(
'Unable to create an Email from an instance of "%s" as the body is too complex.',
get_debug_type
(
$message
)
)
)
;
}
private
static
function
createEmailFromAlternativePart
(
Message
$message
, AlternativePart
$part
)
: Email
{
$parts
=
$part
->
getParts
(
)
;
public
function
testHeaderBody
(
)
{
$headers
=
new
Headers
(
)
;
$this
->
assertNull
(
$headers
->
getHeaderBody
(
'Content-Type'
)
)
;
$headers
->
setHeaderBody
(
'Text', 'Content-Type', 'type'
)
;
$this
->
assertSame
(
'type',
$headers
->
getHeaderBody
(
'Content-Type'
)
)
;
}
public
function
testHeaderParameter
(
)
{
$headers
=
new
Headers
(
)
;
$this
->
assertNull
(
$headers
->
getHeaderParameter
(
'Content-Disposition', 'name'
)
)
;
$headers
->
addParameterizedHeader
(
'Content-Disposition', 'name'
)
;
$headers
->
setHeaderParameter
(
'Content-Disposition', 'name', 'foo'
)
;
$this
->
assertSame
(
'foo',
$headers
->
getHeaderParameter
(
'Content-Disposition', 'name'
)
)
;
}
public
function
testHeaderParameterNotDefined
(
)
{
$headers
=
new
Headers
(
)
;
$this
->
expectException
(
\LogicException::
class
)
;
foreach
(
$email
->
getAttachments
(
)
as
$attachment
)
{
$headers
=
$attachment
->
getPreparedHeaders
(
)
;
$disposition
=
$headers
->
getHeaderBody
(
'Content-Disposition'
)
;
$att
=
[
'content' =>
$attachment
->
bodyToString
(
)
,
'type' =>
$headers
->
get
(
'Content-Type'
)
->
getBody
(
)
,
]
;
if
(
$name
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'name'
)
)
{
$att
[
'name'
]
=
$name
;
}
if
(
'inline' ===
$disposition
)
{
$payload
[
'message'
]
[
'images'
]
[
]
=
$att
;
}
else
{
$payload
[
'message'
]
[
'attachments'
]
[
]
=
$att
;
}
}
$headersToBypass
=
[
'from', 'to', 'cc', 'bcc', 'subject', 'content-type'
]
;
}
return
$payload
;
}
private
function
getAttachments
(
Email
$email
)
: array
{
$attachments
=
[
]
;
foreach
(
$email
->
getAttachments
(
)
as
$attachment
)
{
$headers
=
$attachment
->
getPreparedHeaders
(
)
;
$filename
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'filename'
)
;
$disposition
=
$headers
->
getHeaderBody
(
'Content-Disposition'
)
;
$att
=
[
'name' =>
$filename
,
'content' =>
$attachment
->
bodyToString
(
)
,
'content_type' =>
$headers
->
get
(
'Content-Type'
)
->
getBody
(
)
,
]
;
if
(
'inline' ===
$disposition
)
{
$att
[
'cid'
]
= 'cid:'.
$filename
;
}
return
[
'Email' =>
$address
->
getAddress
(
)
,
'Name' =>
$address
->
getName
(
)
,
]
;
}
private
function
prepareAttachments
(
Email
$email
, ?string
$html
)
: array
{
$attachments
=
$inlines
=
[
]
;
foreach
(
$email
->
getAttachments
(
)
as
$attachment
)
{
$headers
=
$attachment
->
getPreparedHeaders
(
)
;
$filename
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'filename'
)
;
$formattedAttachment
=
[
'ContentType' =>
$attachment
->
getMediaType
(
)
.'/'.
$attachment
->
getMediaSubtype
(
)
,
'Filename' =>
$filename
,
'Base64Content' =>
$attachment
->
bodyToString
(
)
,
]
;
if
(
'inline' ===
$headers
->
getHeaderBody
(
'Content-Disposition'
)
)
{
$formattedAttachment
[
'ContentID'
]
=
$headers
->
getHeaderParameter
(
'Content-Disposition', 'name'
)
;
$inlines
[
]
=
$formattedAttachment
;
}
else
{
$attachments
[
]
=
$formattedAttachment
;
}
}