Subversion Repositories cheapmusic

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
103 - 1
<?php
2
/**
3
  * This helper builds the request body for a /mail/send API call.
4
  *
5
  * PHP version 5.3
6
  *
7
  * @author    Elmer Thomas <dx@sendgrid.com>
8
  * @copyright 2016 SendGrid
9
  * @license   https://opensource.org/licenses/MIT The MIT License
10
  * @version   GIT: <git_id>
11
  * @link      http://packagist.org/packages/sendgrid/sendgrid
12
  */
13
namespace SendGrid;
14
 
15
class ReplyTo implements \JsonSerializable
16
{
17
    private $email;
18
 
19
    public function __construct($email)
20
    {
21
        $this->email = $email;
22
    }
23
 
24
    public function setEmail($email)
25
    {
26
        $this->email = $email;
27
    }
28
 
29
    public function getEmail()
30
    {
31
        return $this->email;
32
    }
33
 
34
    public function jsonSerialize()
35
    {
36
        return array_filter(
37
            [
38
                'email' => $this->getEmail()
39
            ],
40
            function ($value) {
41
                return $value !== null;
42
            }
43
        ) ?: null;
44
    }
45
}
46
 
47
class ClickTracking implements \JsonSerializable
48
{
49
    private $enable;
50
    private $enable_text;
51
 
52
    public function setEnable($enable)
53
    {
54
        $this->enable = $enable;
55
    }
56
 
57
    public function getEnable()
58
    {
59
        return $this->enable;
60
    }
61
 
62
    public function setEnableText($enable_text)
63
    {
64
        $this->enable_text = $enable_text;
65
    }
66
 
67
    public function getEnableText()
68
    {
69
        return $this->enable_text;
70
    }
71
 
72
    public function jsonSerialize()
73
    {
74
        return array_filter(
75
            [
76
                'enable'      => $this->getEnable(),
77
                'enable_text' => $this->getEnableText()
78
            ],
79
            function ($value) {
80
                return $value !== null;
81
            }
82
        ) ?: null;
83
    }
84
}
85
 
86
class OpenTracking implements \JsonSerializable
87
{
88
    private $enable;
89
    private $substitution_tag;
90
 
91
    public function setEnable($enable)
92
    {
93
        $this->enable = $enable;
94
    }
95
 
96
    public function getEnable()
97
    {
98
        return $this->enable;
99
    }
100
 
101
    public function setSubstitutionTag($substitution_tag)
102
    {
103
        $this->substitution_tag = $substitution_tag;
104
    }
105
 
106
    public function getSubstitutionTag()
107
    {
108
        return $this->substitution_tag;
109
    }
110
 
111
    public function jsonSerialize()
112
    {
113
        return array_filter(
114
            [
115
                'enable'           => $this->getEnable(),
116
                'substitution_tag' => $this->getSubstitutionTag()
117
            ],
118
            function ($value) {
119
                return $value !== null;
120
            }
121
        ) ?: null;
122
    }
123
}
124
 
125
class SubscriptionTracking implements \JsonSerializable
126
{
127
    private $enable;
128
    private $text;
129
    private $html;
130
    private $substitution_tag;
131
 
132
    public function setEnable($enable)
133
    {
134
        $this->enable = $enable;
135
    }
136
 
137
    public function getEnable()
138
    {
139
        return $this->enable;
140
    }
141
 
142
    public function setText($text)
143
    {
144
        $this->text = $text;
145
    }
146
 
147
    public function getText()
148
    {
149
        return $this->text;
150
    }
151
 
152
    public function setHtml($html)
153
    {
154
        $this->html = $html;
155
    }
156
 
157
    public function getHtml()
158
    {
159
        return $this->html;
160
    }
161
 
162
    public function setSubstitutionTag($substitution_tag)
163
    {
164
        $this->substitution_tag = $substitution_tag;
165
    }
166
 
167
    public function getSubstitutionTag()
168
    {
169
        return $this->substitution_tag;
170
    }
171
 
172
    public function jsonSerialize()
173
    {
174
        return array_filter(
175
            [
176
                'enable'           => $this->getEnable(),
177
                'text'             => $this->getText(),
178
                'html'             => $this->getHtml(),
179
                'substitution_tag' => $this->getSubstitutionTag()
180
            ],
181
            function ($value) {
182
                return $value !== null;
183
            }
184
        ) ?: null;
185
    }
186
}
187
 
188
class Ganalytics implements \JsonSerializable
189
{
190
    private $enable;
191
    private $utm_source;
192
    private $utm_medium;
193
    private $utm_term;
194
    private $utm_content;
195
    private $utm_campaign;
196
 
197
    public function setEnable($enable)
198
    {
199
        $this->enable = $enable;
200
    }
201
 
202
    public function getEnable()
203
    {
204
        return $this->enable;
205
    }
206
 
207
    public function setCampaignSource($utm_source)
208
    {
209
        $this->utm_source = $utm_source;
210
    }
211
 
212
    public function getCampaignSource()
213
    {
214
        return $this->utm_source;
215
    }
216
 
217
    public function setCampaignMedium($utm_medium)
218
    {
219
        $this->utm_medium = $utm_medium;
220
    }
221
 
222
    public function getCampaignMedium()
223
    {
224
        return $this->utm_medium;
225
    }
226
 
227
    public function setCampaignTerm($utm_term)
228
    {
229
        $this->utm_term = $utm_term;
230
    }
231
 
232
    public function getCampaignTerm()
233
    {
234
        return $this->utm_term;
235
    }
236
 
237
    public function setCampaignContent($utm_content)
238
    {
239
        $this->utm_content = $utm_content;
240
    }
241
 
242
    public function getCampaignContent()
243
    {
244
        return $this->utm_content;
245
    }
246
 
247
    public function setCampaignName($utm_campaign)
248
    {
249
        $this->utm_campaign = $utm_campaign;
250
    }
251
 
252
    public function getCampaignName()
253
    {
254
        return $this->utm_campaign;
255
    }
256
 
257
    public function jsonSerialize()
258
    {
259
        return array_filter(
260
            [
261
                'enable'       => $this->getEnable(),
262
                'utm_source'   => $this->getCampaignSource(),
263
                'utm_medium'   => $this->getCampaignMedium(),
264
                'utm_term'     => $this->getCampaignTerm(),
265
                'utm_content'  => $this->getCampaignContent(),
266
                'utm_campaign' => $this->getCampaignName()
267
            ],
268
            function ($value) {
269
                return $value !== null;
270
            }
271
        ) ?: null;
272
    }
273
}
274
 
275
class TrackingSettings implements \JsonSerializable
276
{
277
    private $click_tracking;
278
    private $open_tracking;
279
    private $subscription_tracking;
280
    private $ganalytics;
281
 
282
    public function setClickTracking($click_tracking)
283
    {
284
        $this->click_tracking = $click_tracking;
285
    }
286
 
287
    public function getClickTracking()
288
    {
289
        return $this->click_tracking;
290
    }
291
 
292
    public function setOpenTracking($open_tracking)
293
    {
294
        $this->open_tracking = $open_tracking;
295
    }
296
 
297
    public function getOpenTracking()
298
    {
299
        return $this->open_tracking;
300
    }
301
 
302
    public function setSubscriptionTracking($subscription_tracking)
303
    {
304
        $this->subscription_tracking = $subscription_tracking;
305
    }
306
 
307
    public function getSubscriptionTracking()
308
    {
309
        return $this->subscription_tracking;
310
    }
311
 
312
    public function setGanalytics($ganalytics)
313
    {
314
        $this->ganalytics = $ganalytics;
315
    }
316
 
317
    public function getGanalytics()
318
    {
319
        return $this->ganalytics;
320
    }
321
 
322
    public function jsonSerialize()
323
    {
324
        return array_filter(
325
            [
326
                'click_tracking'        => $this->getClickTracking(),
327
                'open_tracking'         => $this->getOpenTracking(),
328
                'subscription_tracking' => $this->getSubscriptionTracking(),
329
                'ganalytics'            => $this->getGanalytics()
330
            ],
331
            function ($value) {
332
                return $value !== null;
333
            }
334
        ) ?: null;
335
    }
336
}
337
 
338
class BccSettings implements \JsonSerializable
339
{
340
    private $enable;
341
    private $email;
342
 
343
    public function setEnable($enable)
344
    {
345
        $this->enable = $enable;
346
    }
347
 
348
    public function getEnable()
349
    {
350
        return $this->enable;
351
    }
352
 
353
    public function setEmail($email)
354
    {
355
        $this->email = $email;
356
    }
357
 
358
    public function getEmail()
359
    {
360
        return $this->email;
361
    }
362
 
363
    public function jsonSerialize()
364
    {
365
        return array_filter(
366
            [
367
                'enable' => $this->getEnable(),
368
                'email'  => $this->getEmail()
369
            ],
370
            function ($value) {
371
                return $value !== null;
372
            }
373
        ) ?: null;
374
    }
375
}
376
 
377
class BypassListManagement implements \JsonSerializable
378
{
379
    private $enable;
380
 
381
    public function setEnable($enable)
382
    {
383
        $this->enable = $enable;
384
    }
385
 
386
    public function getEnable()
387
    {
388
        return $this->enable;
389
    }
390
 
391
    public function jsonSerialize()
392
    {
393
        return array_filter(
394
            [
395
                'enable' => $this->getEnable()
396
            ],
397
            function ($value) {
398
                return $value !== null;
399
            }
400
        ) ?: null;
401
    }
402
}
403
 
404
class Footer implements \JsonSerializable
405
{
406
    private $enable;
407
    private $text;
408
    private $html;
409
 
410
    public function setEnable($enable)
411
    {
412
        $this->enable = $enable;
413
    }
414
 
415
    public function getEnable()
416
    {
417
        return $this->enable;
418
    }
419
 
420
    public function setText($text)
421
    {
422
        $this->text = $text;
423
    }
424
 
425
    public function getText()
426
    {
427
        return $this->text;
428
    }
429
 
430
    public function setHtml($html)
431
    {
432
        $this->html = $html;
433
    }
434
 
435
    public function getHtml()
436
    {
437
        return $this->html;
438
    }
439
 
440
    public function jsonSerialize()
441
    {
442
        return array_filter(
443
            [
444
                'enable' => $this->getEnable(),
445
                'text'   => $this->getText(),
446
                'html'   => $this->getHtml()
447
            ],
448
            function ($value) {
449
                return $value !== null;
450
            }
451
        ) ?: null;
452
    }
453
}
454
 
455
class SandBoxMode implements \JsonSerializable
456
{
457
    private $enable;
458
 
459
    public function setEnable($enable)
460
    {
461
        $this->enable = $enable;
462
    }
463
 
464
    public function getEnable()
465
    {
466
        return $this->enable;
467
    }
468
    public function jsonSerialize()
469
    {
470
        return array_filter(
471
            [
472
                'enable' => $this->getEnable()
473
            ],
474
            function ($value) {
475
                return $value !== null;
476
            }
477
        ) ?: null;
478
    }
479
}
480
 
481
class SpamCheck implements \JsonSerializable
482
{
483
    private $enable;
484
    private $threshold;
485
    private $post_to_url;
486
 
487
    public function setEnable($enable)
488
    {
489
        $this->enable = $enable;
490
    }
491
 
492
    public function getEnable()
493
    {
494
        return $this->enable;
495
    }
496
 
497
    public function setThreshold($threshold)
498
    {
499
        $this->threshold = $threshold;
500
    }
501
 
502
    public function getThreshold()
503
    {
504
        return $this->threshold;
505
    }
506
 
507
    public function setPostToUrl($post_to_url)
508
    {
509
        $this->post_to_url = $post_to_url;
510
    }
511
 
512
    public function getPostToUrl()
513
    {
514
        return $this->post_to_url;
515
    }
516
 
517
    public function jsonSerialize()
518
    {
519
        return array_filter(
520
            [
521
                'enable'      => $this->getEnable(),
522
                'threshold'   => $this->getThreshold(),
523
                'post_to_url' => $this->getPostToUrl()
524
            ],
525
            function ($value) {
526
                return $value !== null;
527
            }
528
        ) ?: null;
529
    }
530
}
531
 
532
class MailSettings implements \JsonSerializable
533
{
534
    private $bcc;
535
    private $bypass_list_management;
536
    private $footer;
537
    private $sandbox_mode;
538
    private $spam_check;
539
 
540
    public function setBccSettings($bcc)
541
    {
542
        $this->bcc = $bcc;
543
    }
544
 
545
    public function getBccSettings()
546
    {
547
        return $this->bcc;
548
    }
549
 
550
    public function setBypassListManagement($bypass_list_management)
551
    {
552
        $this->bypass_list_management = $bypass_list_management;
553
    }
554
 
555
    public function getBypassListManagement()
556
    {
557
        return $this->bypass_list_management;
558
    }
559
 
560
    public function setFooter($footer)
561
    {
562
        $this->footer = $footer;
563
    }
564
 
565
    public function getFooter()
566
    {
567
        return $this->footer;
568
    }
569
 
570
    public function setSandboxMode($sandbox_mode)
571
    {
572
        $this->sandbox_mode = $sandbox_mode;
573
    }
574
 
575
    public function getSandboxMode()
576
    {
577
        return $this->sandbox_mode;
578
    }
579
 
580
    public function setSpamCheck($spam_check)
581
    {
582
        $this->spam_check = $spam_check;
583
    }
584
 
585
    public function getSpamCheck()
586
    {
587
        return $this->spam_check;
588
    }
589
 
590
    public function jsonSerialize()
591
    {
592
        return array_filter(
593
            [
594
                'bcc'                    => $this->getBccSettings(),
595
                'bypass_list_management' => $this->getBypassListManagement(),
596
                'footer'                 => $this->getFooter(),
597
                'sandbox_mode'           => $this->getSandboxMode(),
598
                'spam_check'             => $this->getSpamCheck()
599
            ],
600
            function ($value) {
601
                return $value !== null;
602
            }
603
        ) ?: null;
604
    }
605
}
606
 
607
class ASM implements \JsonSerializable
608
{
609
    private $group_id;
610
    private $groups_to_display;
611
 
612
    public function setGroupId($group_id)
613
    {
614
        $this->group_id = $group_id;
615
    }
616
 
617
    public function getGroupId()
618
    {
619
        return $this->group_id;
620
    }
621
 
622
    public function setGroupsToDisplay($group_ids)
623
    {
624
        $this->groups_to_display = $group_ids;
625
    }
626
 
627
    public function getGroupsToDisplay()
628
    {
629
        return $this->groups_to_display;
630
    }
631
 
632
    public function jsonSerialize()
633
    {
634
        return array_filter(
635
            [
636
                'group_id'          => $this->getGroupId(),
637
                'groups_to_display' => $this->getGroupsToDisplay()
638
            ],
639
            function ($value) {
640
                return $value !== null;
641
            }
642
        ) ?: null;
643
    }
644
}
645
 
646
class Attachment implements \JsonSerializable
647
{
648
    private $content;
649
    private $type;
650
    private $filename;
651
    private $disposition;
652
    private $content_id;
653
 
654
    public function setContent($content)
655
    {
656
        $this->content = $content;
657
    }
658
 
659
    public function getContent()
660
    {
661
        return $this->content;
662
    }
663
 
664
    public function setType($type)
665
    {
666
        $this->type = $type;
667
    }
668
 
669
    public function getType()
670
    {
671
        return $this->type;
672
    }
673
 
674
    public function setFilename($filename)
675
    {
676
        $this->filename = $filename;
677
    }
678
 
679
    public function getFilename()
680
    {
681
        return $this->filename;
682
    }
683
 
684
    public function setDisposition($disposition)
685
    {
686
        $this->disposition = $disposition;
687
    }
688
 
689
    public function getDisposition()
690
    {
691
        return $this->disposition;
692
    }
693
 
694
    public function setContentID($content_id)
695
    {
696
        $this->content_id = $content_id;
697
    }
698
 
699
    public function getContentID()
700
    {
701
        return $this->content_id;
702
    }
703
 
704
    public function jsonSerialize()
705
    {
706
        return array_filter(
707
            [
708
                'content'     => $this->getContent(),
709
                'type'        => $this->getType(),
710
                'filename'    => $this->getFilename(),
711
                'disposition' => $this->getDisposition(),
712
                'content_id'  => $this->getContentID()
713
            ],
714
            function ($value) {
715
                return $value !== null;
716
            }
717
        ) ?: null;
718
    }
719
}
720
 
721
class Content implements \JsonSerializable
722
{
723
    private $type;
724
    private $value;
725
 
726
    public function __construct($type, $value)
727
    {
728
        $this->type = $type;
729
        $this->value = mb_convert_encoding($value, 'UTF-8', 'UTF-8');
730
    }
731
 
732
    public function setType($type)
733
    {
734
        $this->type = $type;
735
    }
736
 
737
    public function getType()
738
    {
739
        return $this->type;
740
    }
741
 
742
    public function setValue($value)
743
    {
744
        $this->value = mb_convert_encoding($value, 'UTF-8', 'UTF-8');
745
    }
746
 
747
    public function getValue()
748
    {
749
        return $this->value;
750
    }
751
 
752
    public function jsonSerialize()
753
    {
754
        return array_filter(
755
            [
756
                'type'  => $this->getType(),
757
                'value' => $this->getValue()
758
            ],
759
            function ($value) {
760
                return $value !== null;
761
            }
762
        ) ?: null;
763
    }
764
}
765
 
766
class Personalization implements \JsonSerializable
767
{
768
    private $tos;
769
    private $ccs;
770
    private $bccs;
771
    private $subject;
772
    private $headers;
773
    private $substitutions;
774
    private $custom_args;
775
    private $send_at;
776
 
777
    public function addTo($email)
778
    {
779
        $this->tos[] = $email;
780
    }
781
 
782
    public function getTos()
783
    {
784
        return $this->tos;
785
    }
786
 
787
    public function addCc($email)
788
    {
789
        $this->ccs[] = $email;
790
    }
791
 
792
    public function getCcs()
793
    {
794
        return $this->ccs;
795
    }
796
 
797
    public function addBcc($email)
798
    {
799
        $this->bccs[] = $email;
800
    }
801
 
802
    public function getBccs()
803
    {
804
        return $this->bccs;
805
    }
806
 
807
    public function setSubject($subject)
808
    {
809
        $this->subject = mb_convert_encoding($subject, 'UTF-8', 'UTF-8');
810
    }
811
 
812
    public function getSubject()
813
    {
814
        return $this->subject;
815
    }
816
 
817
    public function addHeader($key, $value)
818
    {
819
        $this->headers[$key] = $value;
820
    }
821
 
822
    public function getHeaders()
823
    {
824
        return $this->headers;
825
    }
826
 
827
    public function addSubstitution($key, $value)
828
    {
829
        $this->substitutions[$key] = $value;
830
    }
831
 
832
    public function getSubstitutions()
833
    {
834
        return $this->substitutions;
835
    }
836
 
837
    public function addCustomArg($key, $value)
838
    {
839
        $this->custom_args[$key] = (string)$value;
840
    }
841
 
842
    public function getCustomArgs()
843
    {
844
        return $this->custom_args;
845
    }
846
 
847
    public function setSendAt($send_at)
848
    {
849
        $this->send_at = $send_at;
850
    }
851
 
852
    public function getSendAt()
853
    {
854
        return $this->send_at;
855
    }
856
 
857
    public function jsonSerialize()
858
    {
859
        return array_filter(
860
            [
861
                'to'            => $this->getTos(),
862
                'cc'            => $this->getCcs(),
863
                'bcc'           => $this->getBccs(),
864
                'subject'       => $this->subject,
865
                'headers'       => $this->getHeaders(),
866
                'substitutions' => $this->getSubstitutions(),
867
                'custom_args'   => $this->getCustomArgs(),
868
                'send_at'       => $this->getSendAt()
869
            ],
870
            function ($value) {
871
                return $value !== null;
872
            }
873
        ) ?: null;
874
    }
875
}
876
 
877
class Email implements \JsonSerializable
878
{
879
    private $name;
880
    private $email;
881
 
882
    public function __construct($name, $email)
883
    {
884
        $this->name = $name;
885
        $this->email = $email;
886
    }
887
 
888
    public function setName($name)
889
    {
890
        $this->name = $name;
891
    }
892
 
893
    public function getName()
894
    {
895
        return $this->name;
896
    }
897
 
898
    public function setEmail($email)
899
    {
900
        $this->email = $email;
901
    }
902
 
903
    public function getEmail()
904
    {
905
        return $this->email;
906
    }
907
 
908
    public function jsonSerialize()
909
    {
910
        return array_filter(
911
            [
912
                'name'  => $this->getName(),
913
                'email' => $this->getEmail()
914
            ],
915
            function ($value) {
916
                return $value !== null;
917
            }
918
        ) ?: null;
919
    }
920
}
921
 
922
/**
923
  * The final request body object
924
  */
925
class Mail implements \JsonSerializable
926
{
927
    const VERSION = '1.0.0';
928
 
929
    protected $namespace = 'SendGrid';
930
 
931
    public $from;
932
    public $personalization;
933
    public $subject;
934
    public $contents;
935
    public $attachments;
936
    public $template_id;
937
    public $sections;
938
    public $headers;
939
    public $categories;
940
    public $custom_args;
941
    public $send_at;
942
    public $batch_id;
943
    public $asm;
944
    public $ip_pool_name;
945
    public $mail_settings;
946
    public $tracking_settings;
947
    public $reply_to;
948
 
949
    public function __construct($from = null, $subject = null, $to = null, $content = null)
950
    {
951
        if (!empty($from) && !empty($subject) && !empty($to) && !empty($content)) {
952
            $this->setFrom($from);
953
            $personalization = new Personalization();
954
            $personalization->addTo($to);
955
            $this->addPersonalization($personalization);
956
            $this->setSubject($subject);
957
            $this->addContent($content);
958
        }
959
    }
960
 
961
    public function setFrom($email)
962
    {
963
        $this->from = $email;
964
    }
965
 
966
    public function getFrom()
967
    {
968
        return $this->from;
969
    }
970
 
971
    public function addPersonalization($personalization)
972
    {
973
        $this->personalization[] = $personalization;
974
    }
975
 
976
    public function getPersonalizations()
977
    {
978
        return $this->personalization;
979
    }
980
 
981
    public function setSubject($subject)
982
    {
983
        $this->subject = $subject;
984
    }
985
 
986
    public function getSubject()
987
    {
988
        return $this->subject;
989
    }
990
 
991
    public function addContent($content)
992
    {
993
        $this->contents[] = $content;
994
    }
995
 
996
    public function getContents()
997
    {
998
        return $this->contents;
999
    }
1000
 
1001
    public function addAttachment($attachment)
1002
    {
1003
        $this->attachments[] = $attachment;
1004
    }
1005
 
1006
    public function getAttachments()
1007
    {
1008
        return $this->attachments;
1009
    }
1010
 
1011
    public function setTemplateId($template_id)
1012
    {
1013
        $this->template_id = $template_id;
1014
    }
1015
 
1016
    public function getTemplateId()
1017
    {
1018
        return $this->template_id;
1019
    }
1020
 
1021
    public function addSection($key, $value)
1022
    {
1023
        $this->sections[$key] = $value;
1024
    }
1025
 
1026
    public function getSections()
1027
    {
1028
        return $this->sections;
1029
    }
1030
 
1031
    public function addHeader($key, $value)
1032
    {
1033
        $this->headers[$key] = $value;
1034
    }
1035
 
1036
    public function getHeaders()
1037
    {
1038
        return $this->headers;
1039
    }
1040
 
1041
    public function addCategory($category)
1042
    {
1043
        $this->categories[] = $category;
1044
    }
1045
 
1046
    public function getCategories()
1047
    {
1048
        return $this->categories;
1049
    }
1050
 
1051
    public function addCustomArg($key, $value)
1052
    {
1053
        $this->custom_args[$key] = (string)$value;
1054
    }
1055
 
1056
    public function getCustomArgs()
1057
    {
1058
        return $this->custom_args;
1059
    }
1060
 
1061
    public function setSendAt($send_at)
1062
    {
1063
        $this->send_at = $send_at;
1064
    }
1065
 
1066
    public function getSendAt()
1067
    {
1068
        return $this->send_at;
1069
    }
1070
 
1071
    public function setBatchId($batch_id)
1072
    {
1073
        $this->batch_id = $batch_id;
1074
    }
1075
 
1076
    public function getBatchId()
1077
    {
1078
        return $this->batch_id;
1079
    }
1080
 
1081
    public function setASM($asm)
1082
    {
1083
        $this->asm = $asm;
1084
    }
1085
 
1086
    public function getASM()
1087
    {
1088
        return $this->asm;
1089
    }
1090
 
1091
    public function setIpPoolName($ip_pool_name)
1092
    {
1093
        $this->ip_pool_name = $ip_pool_name;
1094
    }
1095
 
1096
    public function getIpPoolName()
1097
    {
1098
        return $this->ip_pool_name;
1099
    }
1100
 
1101
    public function setMailSettings($mail_settings)
1102
    {
1103
        $this->mail_settings = $mail_settings;
1104
    }
1105
 
1106
    public function getMailSettings()
1107
    {
1108
        return $this->mail_settings;
1109
    }
1110
 
1111
    public function setTrackingSettings($tracking_settings)
1112
    {
1113
        $this->tracking_settings = $tracking_settings;
1114
    }
1115
 
1116
    public function getTrackingSettings()
1117
    {
1118
        return $this->tracking_settings;
1119
    }
1120
 
1121
    public function setReplyTo($reply_to)
1122
    {
1123
        $this->reply_to = $reply_to;
1124
    }
1125
 
1126
    public function getReplyTo()
1127
    {
1128
        return $this->reply_to;
1129
    }
1130
 
1131
    public function jsonSerialize()
1132
    {
1133
        return array_filter(
1134
            [
1135
                'from'              => $this->getFrom(),
1136
                'personalizations'  => $this->getPersonalizations(),
1137
                'subject'           => $this->getSubject(),
1138
                'content'           => $this->getContents(),
1139
                'attachments'       => $this->getAttachments(),
1140
                'template_id'       => $this->getTemplateId(),
1141
                'sections'          => $this->getSections(),
1142
                'headers'           => $this->getHeaders(),
1143
                'categories'        => $this->getCategories(),
1144
                'custom_args'       => $this->getCustomArgs(),
1145
                'send_at'           => $this->getSendAt(),
1146
                'batch_id'          => $this->getBatchId(),
1147
                'asm'               => $this->getASM(),
1148
                'ip_pool_name'      => $this->getIpPoolName(),
1149
                'mail_settings'     => $this->getMailSettings(),
1150
                'tracking_settings' => $this->getTrackingSettings(),
1151
                'reply_to'          => $this->getReplyTo()
1152
            ],
1153
            function ($value) {
1154
                return $value !== null;
1155
            }
1156
        ) ?: null;
1157
    }
1158
}