Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
getHeaderBody example
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
;
}
}
return
[
$attachments
,
$inlines
,
$html
]
;
}
private
function
getEndpoint
(
)
: ?string
{
}
public
function
testUsesCustomTransport
(
)
{
$transport
= 'foobar';
$mailer
=
$this
->
createMock
(
TransportInterface::
class
)
;
$mailer
->
expects
(
$this
->
once
(
)
)
->
method
(
'send'
)
->
with
(
self::
callback
(
static
fn
(
Email
$message
)
=>
$message
->
getHeaders
(
)
->
getHeaderBody
(
'X-Transport'
)
===
$transport
)
)
;
$tester
=
new
CommandTester
(
new
MailerTestCommand
(
$mailer
)
)
;
$tester
->
execute
(
[
'to' => 'to@example.com',
'--transport' =>
$transport
,
]
)
;
}
}
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
]
;
}
}
}
/** * @param Address[] $addresses */
private
function
addressesFormData
(
array &
$message
, string
$property
, array
$addresses
)
: void
{
$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
(
)
;
}
$attachments
[
]
=
$att
;
}
return
$attachments
;
}
private
function
getEndpoint
(
)
: string
{
'from_email' =>
$envelope
->
getSender
(
)
->
getAddress
(
)
,
'to' =>
$this
->
getRecipientsPayload
(
$email
,
$envelope
)
,
]
,
]
;
if
(
'' !==
$envelope
->
getSender
(
)
->
getName
(
)
)
{
$payload
[
'message'
]
[
'from_name'
]
=
$envelope
->
getSender
(
)
->
getName
(
)
;
}
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
)
{
/** * @return $this */
public
function
subject
(
string
$subject
)
:
static
{
return
$this
->
setHeaderBody
(
'Text', 'Subject',
$subject
)
;
}
public
function
getSubject
(
)
: ?string
{
return
$this
->
getHeaders
(
)
->
getHeaderBody
(
'Subject'
)
;
}
/** * @return $this */
public
function
date
(
\DateTimeInterface
$dateTime
)
:
static
{
return
$this
->
setHeaderBody
(
'Date', 'Date',
$dateTime
)
;
}
public
function
getDate
(
)
: ?\DateTimeImmutable
{
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 $this */
public
function
subject
(
string
$subject
)
:
static
{
return
$this
->
setHeaderBody
(
'Text', 'Subject',
$subject
)
;
}
public
function
getSubject
(
)
: ?string
{
return
$this
->
getHeaders
(
)
->
getHeaderBody
(
'Subject'
)
;
}
/** * @return $this */
public
function
date
(
\DateTimeInterface
$dateTime
)
:
static
{
return
$this
->
setHeaderBody
(
'Date', 'Date',
$dateTime
)
;
}
public
function
getDate
(
)
: ?\DateTimeImmutable
{
'foo' =>
$fooTransport
,
]
)
;
$headers
=
(
new
Headers
(
)
)
->
addTextHeader
(
'X-Transport', 'foo'
)
;
$email
=
new
Message
(
$headers
,
new
TextPart
(
'...'
)
)
;
$this
->
expectExceptionObject
(
$exception
)
;
try
{
$transport
->
send
(
$email
)
;
}
finally
{
$this
->
assertSame
(
'foo',
$email
->
getHeaders
(
)
->
getHeaderBody
(
'X-Transport'
)
)
;
}
}
}
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
;
}
public
function
testReferencesAcceptsIdentifierValues
(
)
{
$headers
=
new
Headers
(
)
;
$headers
->
addIdHeader
(
'References', 'foo@bar.com'
)
;
$this
->
assertEquals
(
'<foo@bar.com>',
$headers
->
get
(
'References'
)
->
getBodyAsString
(
)
)
;
}
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'
)
;
$payload
[
$headerName
]
=
$header
->
getBodyAsString
(
)
;
}
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
;
}
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
;
}
if
(
null ===
$transport
)
{
return
$this
;
}
$this
->message->
getHeaders
(
)
->
addTextHeader
(
'X-Transport',
$transport
)
;
return
$this
;
}
public
function
getTransport
(
)
: ?string
{
return
$this
->message instanceof Email ?
$this
->message->
getHeaders
(
)
->
getHeaderBody
(
'X-Transport'
)
: null;
}
public
function
getNotification
(
)
: ?Notification
{
return
$this
->notification;
}
}