TYPO3  7.6
SimpleMessage.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of SwiftMailer.
5  * (c) 2004-2009 Chris Corbyn
6  *
7  * For the full copyright and license information, please view the LICENSE
8  * file that was distributed with this source code.
9  */
10 
17 {
27  public function __construct(Swift_Mime_HeaderSet $headers, Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache, Swift_Mime_Grammar $grammar, $charset = null)
28  {
29  parent::__construct($headers, $encoder, $cache, $grammar, $charset);
30  $this->getHeaders()->defineOrdering(array(
31  'Return-Path',
32  'Received',
33  'DKIM-Signature',
34  'DomainKey-Signature',
35  'Sender',
36  'Message-ID',
37  'Date',
38  'Subject',
39  'From',
40  'Reply-To',
41  'To',
42  'Cc',
43  'Bcc',
44  'MIME-Version',
45  'Content-Type',
46  'Content-Transfer-Encoding',
47  ));
48  $this->getHeaders()->setAlwaysDisplayed(array('Date', 'Message-ID', 'From'));
49  $this->getHeaders()->addTextHeader('MIME-Version', '1.0');
50  $this->setDate(time());
51  $this->setId($this->getId());
52  $this->getHeaders()->addMailboxHeader('From');
53  }
54 
60  public function getNestingLevel()
61  {
62  return self::LEVEL_TOP;
63  }
64 
72  public function setSubject($subject)
73  {
74  if (!$this->_setHeaderFieldModel('Subject', $subject)) {
75  $this->getHeaders()->addTextHeader('Subject', $subject);
76  }
77 
78  return $this;
79  }
80 
86  public function getSubject()
87  {
88  return $this->_getHeaderFieldModel('Subject');
89  }
90 
98  public function setDate($date)
99  {
100  if (!$this->_setHeaderFieldModel('Date', $date)) {
101  $this->getHeaders()->addDateHeader('Date', $date);
102  }
103 
104  return $this;
105  }
106 
112  public function getDate()
113  {
114  return $this->_getHeaderFieldModel('Date');
115  }
116 
124  public function setReturnPath($address)
125  {
126  if (!$this->_setHeaderFieldModel('Return-Path', $address)) {
127  $this->getHeaders()->addPathHeader('Return-Path', $address);
128  }
129 
130  return $this;
131  }
132 
138  public function getReturnPath()
139  {
140  return $this->_getHeaderFieldModel('Return-Path');
141  }
142 
153  public function setSender($address, $name = null)
154  {
155  if (!is_array($address) && isset($name)) {
156  $address = array($address => $name);
157  }
158 
159  if (!$this->_setHeaderFieldModel('Sender', (array) $address)) {
160  $this->getHeaders()->addMailboxHeader('Sender', (array) $address);
161  }
162 
163  return $this;
164  }
165 
171  public function getSender()
172  {
173  return $this->_getHeaderFieldModel('Sender');
174  }
175 
186  public function addFrom($address, $name = null)
187  {
188  $current = $this->getFrom();
189  $current[$address] = $name;
190 
191  return $this->setFrom($current);
192  }
193 
207  public function setFrom($addresses, $name = null)
208  {
209  if (!is_array($addresses) && isset($name)) {
210  $addresses = array($addresses => $name);
211  }
212 
213  if (!$this->_setHeaderFieldModel('From', (array) $addresses)) {
214  $this->getHeaders()->addMailboxHeader('From', (array) $addresses);
215  }
216 
217  return $this;
218  }
219 
225  public function getFrom()
226  {
227  return $this->_getHeaderFieldModel('From');
228  }
229 
240  public function addReplyTo($address, $name = null)
241  {
242  $current = $this->getReplyTo();
243  $current[$address] = $name;
244 
245  return $this->setReplyTo($current);
246  }
247 
261  public function setReplyTo($addresses, $name = null)
262  {
263  if (!is_array($addresses) && isset($name)) {
264  $addresses = array($addresses => $name);
265  }
266 
267  if (!$this->_setHeaderFieldModel('Reply-To', (array) $addresses)) {
268  $this->getHeaders()->addMailboxHeader('Reply-To', (array) $addresses);
269  }
270 
271  return $this;
272  }
273 
279  public function getReplyTo()
280  {
281  return $this->_getHeaderFieldModel('Reply-To');
282  }
283 
294  public function addTo($address, $name = null)
295  {
296  $current = $this->getTo();
297  $current[$address] = $name;
298 
299  return $this->setTo($current);
300  }
301 
316  public function setTo($addresses, $name = null)
317  {
318  if (!is_array($addresses) && isset($name)) {
319  $addresses = array($addresses => $name);
320  }
321 
322  if (!$this->_setHeaderFieldModel('To', (array) $addresses)) {
323  $this->getHeaders()->addMailboxHeader('To', (array) $addresses);
324  }
325 
326  return $this;
327  }
328 
334  public function getTo()
335  {
336  return $this->_getHeaderFieldModel('To');
337  }
338 
349  public function addCc($address, $name = null)
350  {
351  $current = $this->getCc();
352  $current[$address] = $name;
353 
354  return $this->setCc($current);
355  }
356 
368  public function setCc($addresses, $name = null)
369  {
370  if (!is_array($addresses) && isset($name)) {
371  $addresses = array($addresses => $name);
372  }
373 
374  if (!$this->_setHeaderFieldModel('Cc', (array) $addresses)) {
375  $this->getHeaders()->addMailboxHeader('Cc', (array) $addresses);
376  }
377 
378  return $this;
379  }
380 
386  public function getCc()
387  {
388  return $this->_getHeaderFieldModel('Cc');
389  }
390 
401  public function addBcc($address, $name = null)
402  {
403  $current = $this->getBcc();
404  $current[$address] = $name;
405 
406  return $this->setBcc($current);
407  }
408 
420  public function setBcc($addresses, $name = null)
421  {
422  if (!is_array($addresses) && isset($name)) {
423  $addresses = array($addresses => $name);
424  }
425 
426  if (!$this->_setHeaderFieldModel('Bcc', (array) $addresses)) {
427  $this->getHeaders()->addMailboxHeader('Bcc', (array) $addresses);
428  }
429 
430  return $this;
431  }
432 
438  public function getBcc()
439  {
440  return $this->_getHeaderFieldModel('Bcc');
441  }
442 
452  public function setPriority($priority)
453  {
454  $priorityMap = array(
455  1 => 'Highest',
456  2 => 'High',
457  3 => 'Normal',
458  4 => 'Low',
459  5 => 'Lowest',
460  );
461  $pMapKeys = array_keys($priorityMap);
462  if ($priority > max($pMapKeys)) {
463  $priority = max($pMapKeys);
464  } elseif ($priority < min($pMapKeys)) {
465  $priority = min($pMapKeys);
466  }
467  if (!$this->_setHeaderFieldModel('X-Priority',
468  sprintf('%d (%s)', $priority, $priorityMap[$priority]))) {
469  $this->getHeaders()->addTextHeader('X-Priority',
470  sprintf('%d (%s)', $priority, $priorityMap[$priority]));
471  }
472 
473  return $this;
474  }
475 
484  public function getPriority()
485  {
486  list($priority) = sscanf($this->_getHeaderFieldModel('X-Priority'),
487  '%[1-5]'
488  );
489 
490  return isset($priority) ? $priority : 3;
491  }
492 
500  public function setReadReceiptTo($addresses)
501  {
502  if (!$this->_setHeaderFieldModel('Disposition-Notification-To', $addresses)) {
503  $this->getHeaders()
504  ->addMailboxHeader('Disposition-Notification-To', $addresses);
505  }
506 
507  return $this;
508  }
509 
515  public function getReadReceiptTo()
516  {
517  return $this->_getHeaderFieldModel('Disposition-Notification-To');
518  }
519 
527  public function attach(Swift_Mime_MimeEntity $entity)
528  {
529  $this->setChildren(array_merge($this->getChildren(), array($entity)));
530 
531  return $this;
532  }
533 
541  public function detach(Swift_Mime_MimeEntity $entity)
542  {
543  $newChildren = array();
544  foreach ($this->getChildren() as $child) {
545  if ($entity !== $child) {
546  $newChildren[] = $child;
547  }
548  }
549  $this->setChildren($newChildren);
550 
551  return $this;
552  }
553 
562  public function embed(Swift_Mime_MimeEntity $entity)
563  {
564  $this->attach($entity);
565 
566  return 'cid:'.$entity->getId();
567  }
568 
574  public function toString()
575  {
576  if (count($children = $this->getChildren()) > 0 && $this->getBody() != '') {
577  $this->setChildren(array_merge(array($this->_becomeMimePart()), $children));
578  $string = parent::toString();
579  $this->setChildren($children);
580  } else {
581  $string = parent::toString();
582  }
583 
584  return $string;
585  }
586 
594  public function __toString()
595  {
596  return $this->toString();
597  }
598 
604  public function toByteStream(Swift_InputByteStream $is)
605  {
606  if (count($children = $this->getChildren()) > 0 && $this->getBody() != '') {
607  $this->setChildren(array_merge(array($this->_becomeMimePart()), $children));
608  parent::toByteStream($is);
609  $this->setChildren($children);
610  } else {
611  parent::toByteStream($is);
612  }
613  }
614 
616  protected function _getIdField()
617  {
618  return 'Message-ID';
619  }
620 
622  protected function _becomeMimePart()
623  {
624  $part = new parent($this->getHeaders()->newInstance(), $this->getEncoder(),
625  $this->_getCache(), $this->_getGrammar(), $this->_userCharset
626  );
627  $part->setContentType($this->_userContentType);
628  $part->setBody($this->getBody());
629  $part->setFormat($this->_userFormat);
630  $part->setDelSp($this->_userDelSp);
631  $part->_setNestingLevel($this->_getTopNestingLevel());
632 
633  return $part;
634  }
635 
637  private function _getTopNestingLevel()
638  {
639  $highestLevel = $this->getNestingLevel();
640  foreach ($this->getChildren() as $child) {
641  $childLevel = $child->getNestingLevel();
642  if ($highestLevel < $childLevel) {
643  $highestLevel = $childLevel;
644  }
645  }
646 
647  return $highestLevel;
648  }
649 }