zj
2025-01-06 0e7b38c2b3af72ea2a7f8a2fcbaad4d78e2c1977
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
/**
 * ServiceSoap.java
 *
 * This file was auto-generated from WSDL
 * by the Apache Axis 1.4.1-SNAPSHOT Nov 07, 2023 (07:57:58 UTC) WSDL2Java emitter.
 */
 
package com.gear.common.utils.emailsq.service;
 
public interface ServiceSoap extends java.rmi.Remote {
 
    /**
     * <b>(It is only for internal use currently.)</b>
     */
    public boolean addSubscriberByInfoSerialize(java.lang.String loginEmail, java.lang.String password, java.lang.String strsubscriberArgs, java.lang.String subscription, com.gear.common.utils.emailsq.service.DoubleOptIn optInType) throws java.rmi.RemoteException;
 
    /**
     * <b>(It is only for internal use currently.)</b>
     */
    public com.gear.common.utils.emailsq.service.AddSubscribersByInfoSerializeResponseAddSubscribersByInfoSerializeResult addSubscribersByInfoSerialize(java.lang.String loginEmail, java.lang.String password, java.lang.String strsubscriberArgs, java.lang.String subscription, com.gear.common.utils.emailsq.service.DoubleOptIn optInType) throws java.rmi.RemoteException;
 
    /**
     * <b>(It is only for internal use currently.)</b>
     */
    public java.lang.String addSubscribersByInfo2Serialize(java.lang.String loginEmail, java.lang.String password, java.lang.String subscriberArgs, java.lang.String subscription, com.gear.common.utils.emailsq.service.DoubleOptIn optInType, boolean isOverRide, int userID, int websiteID, java.lang.String APIUrl) throws java.rmi.RemoteException;
 
    /**
     * <b>(Exclude Contacts List.)</b><br>loginEmail: Login Email
     * Of Spread.<br>APIKey: Login Password of Spread or APIKey API Key which
     * you can retrieve from your Spread account (My account=> Settings).<br>contacts:
     * contacts list.<br>excludes: excludes contacts list.<br>
     */
    public java.lang.String excludeContacts(java.lang.String loginEmail, java.lang.String apiKey, java.lang.String[] contacts, java.lang.String[] excludes) throws java.rmi.RemoteException;
 
    /**
     * <b>(Exclude Contacts List by domain.)</b><br>loginEmail: Login
     * Email Of Spread.<br>APIKey: Login Password of Spread or APIKey API
     * Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>contacts: contacts list.<br>domain: domain<br>
     */
    public java.lang.String excludeContactsByDomain(java.lang.String loginEmail, java.lang.String apiKey, java.lang.String[] contacts, java.lang.String domain) throws java.rmi.RemoteException;
 
    /**
     * <b>(Exclude Contacts List by NetEase.)</b><br>loginEmail: Login
     * Email Of Spread.<br>APIKey: Login Password of Spread or APIKey API
     * Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>contacts: contacts list.<br>isNetEase: is it net ease<br>
     */
    public java.lang.String excludeContactsByNetEase(java.lang.String loginEmail, java.lang.String apiKey, java.lang.String[] contacts, boolean isNetEase) throws java.rmi.RemoteException;
 
    /**
     * <b>(get NetEase Rank)</b><br>loginEmail: Login Email Of Spread.<br>APIKey:
     * Login Password of Spread or APIKey API Key which you can retrieve
     * from your Spread account (My account=> Settings).
     */
    public int getNetEaseRank(java.lang.String loginEmail, java.lang.String apiKey) throws java.rmi.RemoteException;
 
    /**
     * Get WebSiteID of the user</b><br/>Arguments:<br/><br/>loginEmail:
     * Login Email Of Spread.<br>APIKey: Login Password Of Spread Or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br/>return: WebSiteID of the user
     */
    public int getWebSiteID(java.lang.String loginEmail, java.lang.String apiKey) throws java.rmi.RemoteException;
 
    /**
     * getUserSentReport<strong></strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>campaignType: The type of campaign.<br>startDate:Starting
     * time<br>endDate:End time<br><br>return dataset.<br><br>Dataset Columns:<br>Year,Month,Sent
     */
    public com.gear.common.utils.emailsq.service.GetUserSentReportResponseGetUserSentReportResult getUserSentReport(java.lang.String loginEmail, java.lang.String APIKey, com.gear.common.utils.emailsq.service.AccountType accountType, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * GetUserCredit<strong></strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>accountType: The type of account.<br>return dataset.<br><br>Dataset
     * Columns:<br>Credit,Sent,ExpiryDate
     */
    public com.gear.common.utils.emailsq.service.GetUserCreditResponseGetUserCreditResult getUserCredit(java.lang.String loginEmail, java.lang.String APIKey, com.gear.common.utils.emailsq.service.AccountType accountType) throws java.rmi.RemoteException;
 
    /**
     * GetSubscriberDetail<strong></strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>subscriber_email: The email of subscriber.<br>return
     * dataset.<br><br>Dataset Columns:<br>Credit,Sent,ExpiryDate
     */
    public com.gear.common.utils.emailsq.service.GetSubscriberDetailResponseGetSubscriberDetailResult getSubscriberDetail(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String subscriber_email) throws java.rmi.RemoteException;
 
    /**
     * GetCampaignSubscriberDetail<strong></strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>subscriber_email: The email of subscriber.<br>campaign_id:
     * The ID of campaign.<br>return dataset.<br><br>Dataset Columns:<br>Credit,Sent,ExpiryDate
     */
    public com.gear.common.utils.emailsq.service.GetCampaignSubscriberDetailResponseGetCampaignSubscriberDetailResult getCampaignSubscriberDetail(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String subscriber_email, int campaign_id) throws java.rmi.RemoteException;
 
    /**
     * GetUploadRequestStatus<strong></strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>RequestID: The request of SpreadWebServcie.UploadContactListFile
     * return .<br>return dataset.<br><br>Dataset Columns:<br>RequestID,
     * UploadStatus(Complete or Error or Uploading), ContactList, UploadTime,
     * TotalCount, NewCount, DuplicateCount,DeletedCount, ExistingCount,
     * SpamCount, UnsubscribedCount, DoNotMailCount, UndeliverableCount,
     * asUnconfirmedCount, InvalidCount
     */
    public com.gear.common.utils.emailsq.service.GetUploadRequestStatusResponseGetUploadRequestStatusResult getUploadRequestStatus(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String requestID) throws java.rmi.RemoteException;
 
    /**
     * UnsubscribeEmailInAccount<strong></strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>subscriberEmail: The email of subscriber.<br>return
     * true if success.<br><br>
     */
    public boolean unsubscribeEmailInAccount(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String subscriberEmail) throws java.rmi.RemoteException;
 
    /**
     * UnsubscribeEmailInContactList<strong></strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>subscriberEmail: The email of subscriber.<br>contactListName:
     * The name of contactlist.<br>return true if success.<br><br>
     */
    public boolean unsubscribeEmailInContactList(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String subscriberEmail, java.lang.String contactListName) throws java.rmi.RemoteException;
 
    /**
     * Email address of the subscriber who requested to opt-in.<br><br>Arguments:<br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>MemberId: MemberId of member.<br><br>Return 1 means
     * success, else return error message.<br><br>Remarks: use POST method
     * to submit your data<br>
     */
    public java.lang.String updateMemberOptIn() throws java.rmi.RemoteException;
 
    /**
     * Email address of the subscriber who requested to opt-out.<br><br>Arguments:<br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or API
     * Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>MemberId: MemberId of member.<br><br>Return 1 means
     * success, else return error message.<br><br>Remarks: use POST method
     * to submit your data<br>
     */
    public java.lang.String updateMemberOptOut() throws java.rmi.RemoteException;
 
    /**
     * Email address of the subscriber who requested to opt-in.<br><br>Arguments:<br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or API
     * Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>MemberId: MemberId of the subscriber.<br>Status: The
     * status of member  (<b>Active</b>, <b>Frozen</b>, <b>Cancel</b>).<br>AcceptPromotion:
     * "<b>Y</b>" for opt-in, "<b>N</b>" for opt-out.<br><br>Return 1 means
     * success, else return error message.<br><br>Remarks: use POST method
     * to submit your data<br>
     */
    public java.lang.String updateMemberStatus() throws java.rmi.RemoteException;
 
    /**
     * GetSubscriberDetailByCustomKey<strong></strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>FieldName: The field to search : customField1,customField2,customField3...customField15
     * and customPrimarykey,<br>Value: The value of the custom field。<br>return
     * dataset.<br><br>Dataset Columns:<br>All subscriber fields.
     */
    public com.gear.common.utils.emailsq.service.GetSubscribersByFieldResponseGetSubscribersByFieldResult getSubscribersByField(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String fieldName, java.lang.String value) throws java.rmi.RemoteException;
 
    /**
     * Update contact file .<br>Arguments:<br><br>loginEmail: Login
     * Email of Spread.<br>loginPassword: Login Password of Spread.<br>fileType:
     * Type of upload data, include ".xls", ".csv", ".xlsx" <br>fileStream:
     * The upload file stream ( length<100MB ) <br>contactListName: the name
     * of contact list(Optional).It will create a temp contacat list for
     * update/merge whatever provide a contact list name.<br><br>processType:
     * merge/update/skipreturn:  result
     */
    public java.lang.String uploadContactListDatei(java.lang.String loginEmail, java.lang.String loginPassword, java.lang.String fileType, byte[] myFileStream, java.lang.String contactListName, java.lang.String processType) throws java.rmi.RemoteException;
 
    /**
     * UpdateContactCustomFieldName<strong></strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>customFieldNo: 1-15.<br>EnglishDisplayName: English
     * display name .<br>TraditionalDisplayName: Traditional Chinese display
     * name.<br>SimpleChineseDisplayName:Simple Chinese display name.<br>return
     * true if successfully
     */
    public boolean updateContactCustomFieldName(java.lang.String loginEmail, java.lang.String APIKey, int customFieldNo, java.lang.String englishDisplayName, java.lang.String traditionalDisplayName, java.lang.String simpleChineseDisplayName) throws java.rmi.RemoteException;
 
    /**
     * ClearContactData<strong></strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>ContactListName: The contact list name.<br>FieldName:
     * Only this field can be cleared data : firstName,middleName,lastName,jobTitle,company,homePhone,address1,address2,address3,city,state,country<br>postalCode,subPostalCode,webUrl,fax,gender,title,date1,date2,birthday,customField1,customField2,customField3...customField15<br>return
     * true if successfully
     */
    public boolean clearContactData(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String contactListName, java.lang.String fieldName) throws java.rmi.RemoteException;
 
    /**
     * SendBatchEmails<strong></strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>apiKey: API Key which you can retrieve from
     * your Spread account (My account=> Settings).<br>campaignName: CampaignName<br>from:
     * Email address of From<br>fromName: FromName<br>batchNo: BatchNo for
     * the campaignt<br>systemId: SystemId for the campaign<br>subscriberCampaignContent:
     * ToEmails(),CategoryNames(), Subject,Content<br>attachmentUrl: The
     * attachment download url, support pdf,word,excel,ppt,txt and images
     * etc.<br>return SendBatchEmailsResponse.<br><br>Result,CampaignId,SystemId,BatchNo,ResultMsg
     */
    public com.gear.common.utils.emailsq.service.SendBatchEmailsResponse sendBatchEmails(java.lang.String loginEmail, java.lang.String apiKey, java.lang.String campaignName, java.lang.String from, java.lang.String fromName, java.lang.String batchNO, java.lang.String systemID, com.gear.common.utils.emailsq.service.SubscriberCampaignContent[] subscriberCampaignContent, java.lang.String[] attachmentUrl) throws java.rmi.RemoteException;
 
    /**
     * GetCampaignSummaryReport<strong></strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>apiKey: API Key which you can retrieve from
     * your Spread account (My account=> Settings).<br>campaignId: if no,
     * input 0<br>systemId: SystemId for the campaign<br>batchNo: BatchNo
     * for the campaignt<br>return ReportResponse.<br><br>Result,systemId,batchNo,ResultMsg
     */
    public com.gear.common.utils.emailsq.service.ReportResponse getCampaignSummaryReport(java.lang.String loginEmail, java.lang.String apiKey, int campaignId, java.lang.String systemId, java.lang.String batchNo) throws java.rmi.RemoteException;
 
    /**
     * Get the phone number infomation
     */
    public com.gear.common.utils.emailsq.service.DsGetWhatsAppPhoneNumberByIDResponseDsGetWhatsAppPhoneNumberByIDResult dsGetWhatsAppPhoneNumberByID(java.lang.String APIKey, java.lang.String phoneNumberID) throws java.rmi.RemoteException;
 
    /**
     * Add whatsapp message sent by the engine
     */
    public boolean addWhatsAppMessage(java.lang.String APIKey, java.lang.String messageID, java.lang.String hostID, java.lang.String clientID, boolean toOrFrom, long longTimestamp, java.lang.String replyTo, java.lang.String status, java.lang.String text, java.lang.String mediaID, java.lang.String mimeType, java.lang.String sha256, java.lang.String filename, int campaignID, int subscriberID) throws java.rmi.RemoteException;
 
    /**
     * Send email by Template, return email id.<br><br>Arguments:<br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or API
     * Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>MemberId. If there is no member id, please set 0.<br>Email:
     * The email address of recipient.<br>TemplateId: The TemplateId(CampaignID)
     * of email.<br>SubstitutionVars: It is a custom value of Json type.
     * If there is a tag named [CUSTOM] in campaign, then you can send :
     * {"[CUSTOM]":"Value"} .<br>CreativeLanguage: language, such as : en,en-us,zh-tw,zh-cn.<br>Cc:
     * The email address of CC recipients <br><br>Return email id.<br><br>Remarks:
     * If you want to send the template, it should be approved.<br>
     */
    public java.lang.String sendTemplateEmail2(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String memberId, java.lang.String email, java.lang.String templateId, java.lang.String substitutionVars, java.lang.String creativeLanguage, java.lang.String[] cc) throws java.rmi.RemoteException;
 
    /**
     * Create a new email campaign draft.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>campaignArgs:
     * Campaign Class, includes campaignName, fromEmail, from, subject, content,
     * signature and schedule<br>category: An array of string contains the
     * names of categories added to this email campaign.<br>interval: Type
     * of email Campaign. -1, send for once only. Non-negetive number, n
     * days after subscribers subscribe.<br><br>return campaignID.
     */
    public int createCampaignDraft(java.lang.String loginEmail, java.lang.String password, com.gear.common.utils.emailsq.service.Campaign campaignArgs, java.lang.String[] category, int interval) throws java.rmi.RemoteException;
 
    /**
     * Create a new email campaign draft.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>campaignArgs:
     * Campaign Class, includes campaignName, fromEmail, from, subject, content,
     * signature and schedule<br>category: An array of string contains the
     * names of categories added to this email campaign.<br>interval: Type
     * of email Campaign. -1, send for once only. Non-negetive number, n
     * days after subscribers subscribe.<br><br>return campaignID.
     */
    public int createCampaignDraft2(java.lang.String loginEmail, java.lang.String password, com.gear.common.utils.emailsq.service.Campaign campaignArgs, java.lang.String[] category, int interval) throws java.rmi.RemoteException;
 
    /**
     * Create a new email campaign and send it out.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password or API KEY of Spread.<br>campaignArgs:
     * Campaign Class, includes campaignName, fromEmail, from, subject, content,
     * signature and schedule<br>category: An array of string contains the
     * names of categories added to this email campaign.<br>interval: Type
     * of email Campaign. -1, send for once only. Non-negetive number, n
     * days after subscribers subscribe.<br><br>return campaignID.
     */
    public int createCampaign(java.lang.String loginEmail, java.lang.String password, com.gear.common.utils.emailsq.service.Campaign campaignArgs, java.lang.String[] category, int interval) throws java.rmi.RemoteException;
 
    /**
     * Create a new email campaign with birthday trigger.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password or API KEY of Spread.<br>campaignArgs:
     * Campaign Class, includes campaignName, fromEmail, from, subject, content,
     * signature and schedule<br>category: An array of string contains the
     * names of categories added to this email campaign.<br>birthSetting:
     * the birthday trigger setting,include BeforeBirthdayDay:the No. of
     * days before birthday to send email.<br><br>AfterBirthdayMonth:the
     * No. of months expires after birthday <br><br>EndToMonth: By the end
     * of the month  <br><br>isDraft: is Draft or not.<br>return campaignID.
     */
    public int createBirthdayTriggerCampaign(java.lang.String loginEmail, java.lang.String password, com.gear.common.utils.emailsq.service.Campaign campaignArgs, java.lang.String[] category, com.gear.common.utils.emailsq.service.BirthdayTriggerIntervalModel birthSetting, boolean isDraft) throws java.rmi.RemoteException;
 
    /**
     * Update the existing birthday trigger campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password or API KEY of Spread.<br>CampaignId:
     * CampaignId of the existing campaign.<br><br>SubscriberEmail: subscriber
     * email<br>Birthday:  Birthday.<br>return Birthday Trigger Logs.
     */
    public com.gear.common.utils.emailsq.service.BirthdayTriggerLogResult[] updateBirthdayTriggerCampaignSubscriberBirthday(java.lang.String loginEmail, java.lang.String password, int campaignId, java.lang.String subscriberEmail, java.util.Calendar birthday) throws java.rmi.RemoteException;
 
    /**
     * Create a new email campaign and send it out.
     */
    public int createCampaignBySimpleType(java.lang.String loginEmail, java.lang.String password, java.lang.String campaignName, java.lang.String from, java.lang.String fromEmail, java.lang.String subject, java.lang.String content, java.util.Calendar schedule, java.lang.String categorys, int interval) throws java.rmi.RemoteException;
 
    /**
     * Create a new email campaign and campaign creatives .<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>campaignName:
     * The name of the email campaign.<br>campaignCreatives: campaignCreatives
     * Array, CampaignCreatives Class includes displayName, fromAddress,
     * replyTo, subject, creativeContent, target and isCampaignDefault.<br>category:
     * An array of string contains the names of categories added to this
     * email campaign.<br>interval: Type of email Campaign. -1, send for
     * once only. Non-negetive number, n days after subscribers subscribe.<br><br>schedule:
     * The date of when to establish the email campaign.<br>signature: The
     * signature of the email campaign.<br>campaignStatus: The status of
     * the email campaign.<br>return campaignID.
     */
    public int createCampaign2(java.lang.String loginEmail, java.lang.String password, java.lang.String campaignName, com.gear.common.utils.emailsq.service.CampaignCreatives[] campaignCreatives, java.lang.String[] category, int interval, java.util.Calendar schedule, java.lang.String signature, com.gear.common.utils.emailsq.service.CampaignStatus campaignStatus) throws java.rmi.RemoteException;
 
    /**
     * Get the Information of Campaigns.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: AP IKey of Spread.<br>pageNumber:
     * The index of page.<br>pageSize: The size of page.<br><br>return dateset
     * result.
     */
    public com.gear.common.utils.emailsq.service.GetCampaignsResponseGetCampaignsResult getCampaigns(java.lang.String loginEmail, java.lang.String APIKey, int pageNumber, int pageSize) throws java.rmi.RemoteException;
 
    /**
     * Delete the campaigns.<br>Arguments:<br><br>loginEmail: Login
     * Email of Spread.<br>APIKey: Login Password or APIKey of Spread.<br>campaignID:
     * Campaign ID.<br><br>return true if success.
     */
    public boolean deleteCampaign(java.lang.String loginEmail, java.lang.String APIKey, int campaignID) throws java.rmi.RemoteException;
 
    /**
     * Create a new email campaign and campaign creatives .<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: API Key of Spread.<br>campaignID:
     * The ID of the email campaign.<br>campaignStatus: The status of the
     * email campaign.<br>return true if succeed.<br><br>Remarks: If only
     * the campaign is in "Sending" or "Waiting" can be updated to "Pause",
     * Or in "Pause" can be updated to "Waiting".
     */
    public boolean updateCampaignStatus(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String campaignID, com.gear.common.utils.emailsq.service.CampaignStatus campaignStatus) throws java.rmi.RemoteException;
 
    /**
     * Create a new SMS campaign <br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: The APIKey of your Spread account
     * which you can retrieve from your Spread account (My account=> API).<br>SMSContent:
     * The content of SMS campaign.<br>sender:The sender of SMS campaign.<br>schedule:
     * The date of when to establish the SMS campaign.<br>campaignStatus:
     * The status of the SMS campaign.<br>phoneSubscribers: An array of string
     * contains the phone number added to this SMS campaign.<br>category:
     * An array of string contains the names of categories added to this
     * SMS campaign.<br>return campaignID.
     */
    public int sendSMS(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String SMSContent, java.lang.String sender, java.util.Calendar schedule, com.gear.common.utils.emailsq.service.CampaignStatus campaignStatus, java.lang.String[] phoneSubscribers, java.lang.String[] category) throws java.rmi.RemoteException;
 
    /**
     * Create a new MMS campaign <br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>apiKey: The APIKey of your Spread account
     * which you can retrieve from your Spread account (My account=> API).<br>subject:
     * The Subject of MMS campaign.<br>mmsContent: The content of MMS campaign.<br>imageBase64String:
     * The base64 string for the image of MMS campaign.<br>sender:The sender
     * of MMS campaign.<br>schedule: The date of when to establish the MMS
     * campaign.<br>campaignStatus: The status of the MMS campaign.<br>phoneSubscribers:
     * An array of string contains the phone number added to this MMS campaign.<br>category:
     * An array of string contains the names of categories added to this
     * MMS campaign.<br>return campaignID.
     */
    public java.lang.String sendMMS(java.lang.String loginEmail, java.lang.String apiKey, java.lang.String subject, java.lang.String mmsContent, java.lang.String imageBase64String, java.lang.String sender, java.util.Calendar schedule, com.gear.common.utils.emailsq.service.CampaignStatus campaignStatus, java.lang.String[] phoneSubscribers, java.lang.String[] category) throws java.rmi.RemoteException;
 
    /**
     * Get Sms Replies <br>Arguments:<br><br>loginEmail: Login Email
     * of Spread.<br>APIKey: The APIKey of your Spread account which you
     * can retrieve from your Spread account (My account=> Settings).<br>campaignId:
     * Campaign Id<br>return table, column: phone\content\time.
     */
    public com.gear.common.utils.emailsq.service.GetSmsRepliesResponseGetSmsRepliesResult getSmsReplies(java.lang.String loginEmail, java.lang.String password, int campaignId) throws java.rmi.RemoteException;
 
    /**
     * Get the Status of an Email Campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>CampaignID<br><br>return
     * Status.
     */
    public com.gear.common.utils.emailsq.service.CampaignStatus getCampaignStatus(java.lang.String loginEmail, java.lang.String password, int campaignID) throws java.rmi.RemoteException;
 
    /**
     * Get the Report of an Email Campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>CampaignID<br><br>return
     * CampaignReport.
     */
    public com.gear.common.utils.emailsq.service.CampaignReport getCampaignReport(java.lang.String loginEmail, java.lang.String password, int campaignID) throws java.rmi.RemoteException;
 
    /**
     * Get Contact report in a period of time .<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>startDate:
     * start date of date range<br>endDate: end date of date range<br>email:
     * subscriber email<br>keyword: key word in email to search <br>pageSize:
     * page item count of query per time <br>pageIndex: page index. default<br><br>Return
     * DataTable.<br>Dataset Columns:<br>SubscriberID, EmailAddress, CampaignID,
     * Subject, SentTime, StatusID, TransMailId
     */
    public com.gear.common.utils.emailsq.service.GetContactReportResponseGetContactReportResult getContactReport(java.lang.String loginEmail, java.lang.String password, java.util.Calendar startDate, java.util.Calendar endDate, java.lang.String email, java.lang.String keyword, int pageSize, int pageIndex) throws java.rmi.RemoteException;
 
    /**
     * Get detail for email of campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>campaignID:Campaign
     * ID<br>tranID: Transaction ID <br>startDate:Starting time<br>endDate:End
     * time<br><br>Return Dataset.<br>Dataset Columns:<br>EmailAddress, IsSuccess,
     * SentTime, SubscriberStatus, Subject, Content
     */
    public com.gear.common.utils.emailsq.service.GetSentCampaignDetailResponseGetSentCampaignDetailResult getSentCampaignDetail(java.lang.String loginEmail, java.lang.String password, int campaignID, java.lang.String tranID, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get the Report of an Email Subscriber.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>
     */
    public com.gear.common.utils.emailsq.service.GetSubscriberReportResponseGetSubscriberReportResult getSubscriberReport(java.lang.String loginEmail, java.lang.String password) throws java.rmi.RemoteException;
 
    /**
     * Publish or not publish Newsletters
     */
    public boolean changePublishStatus(java.lang.String loginEmail, java.lang.String password, java.lang.String campaign_id, boolean isPublish) throws java.rmi.RemoteException;
 
    /**
     * Get all subscriptions.<br>Arguments:<br><br>loginEmail: Login
     * Email of Spread.<br>password: Login Password of Spread.<br><br>return
     * dataset.<br><br>Dataset Columns:<br>Subscription Name, description,
     * status, no. of subscribers
     */
    public com.gear.common.utils.emailsq.service.GetAllSubscriptionResponseGetAllSubscriptionResult getAllSubscription(java.lang.String loginEmail, java.lang.String password) throws java.rmi.RemoteException;
 
    /**
     * Get subscriptions in particular Status.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>status<br><br>return
     * dataset.<br><br>Dataset Columns:<br>Subscription Name, description,
     * status, no. of subscribers
     */
    public com.gear.common.utils.emailsq.service.GetSubscriptionResponseGetSubscriptionResult getSubscription(java.lang.String loginEmail, java.lang.String password, com.gear.common.utils.emailsq.service.SubscriptionStatus status) throws java.rmi.RemoteException;
 
    /**
     * Get subscriptions in particular Status.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>status<br><br>return
     * string.<br><br>
     */
    public java.lang.String getSubscriptions2String(java.lang.String loginEmail, java.lang.String password, com.gear.common.utils.emailsq.service.SubscriptionStatus status) throws java.rmi.RemoteException;
 
    /**
     * Get specified status's subscribers in subscription.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>subscription:
     * Subscription Name<br>status: subscriber status<br><br>return dataset.<br><br>Dataset
     * Columns:<br>subscriber_email,Status
     */
    public com.gear.common.utils.emailsq.service.GetSubscribersResponseGetSubscribersResult getSubscribers(java.lang.String loginEmail, java.lang.String password, java.lang.String subscription, com.gear.common.utils.emailsq.service.SubscriberStatus status) throws java.rmi.RemoteException;
 
    /**
     * Get specified status's subscribers in subscription.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: APIKey of Spread API.<br>subscription:
     * Subscription Name<br>status: subscriber status, the text contains
     * "<b>Any</b>" or "<b>Deleted</b>" or "<b>Active</b>" or "<b>Unsubscribed</b>"
     * or "<b>Unconfirmed</b>" or "<b>Undeliverable</b>" or "<b>SpamReporter</b>"
     * or "<b>DoNotMail</b>" or "<b>Blacklist</b>", which is splited with
     * ",".<br>startDate: Starting time, you can set the value like "1 Jan
     * 2019 00:00:00" or "2019-01-01 00:00:00".<br>endDate: End Time, the
     * format is like startDate.<br><br>return dataset.<br><br>Dataset Columns:<br>subscriber_email,Status
     */
    public com.gear.common.utils.emailsq.service.GetDateRangeSubscribersResponseGetDateRangeSubscribersResult getDateRangeSubscribers(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String subscription, java.lang.String status, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get campaigns imformation by folder name.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>folderName:
     * folder namereturn: a single table with the columns: campaign_name,campaign_subject,cdate_created,cdate_updated
     */
    public com.gear.common.utils.emailsq.service.GetCampaignsByFolderResponseGetCampaignsByFolderResult getCampaignsByFolder(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String folderName) throws java.rmi.RemoteException;
 
    /**
     * Update campaigns imformation by folder name.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>campaignName:
     * campaign name.<br>folderName: folder name.<br><br>return:'Update Campaign
     * Folder Success/Fail/Error'
     */
    public java.lang.String updateCampaignFolder(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String campaignName, java.lang.String folderName) throws java.rmi.RemoteException;
 
    /**
     * Create a new subscription.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>subscriptionName:
     * Subscription Name<br>description: Description of the new subscription.<br><br>return
     * true if succeed.
     */
    public boolean createSubscription(java.lang.String loginEmail, java.lang.String password, java.lang.String subscriptionName, java.lang.String description) throws java.rmi.RemoteException;
 
    /**
     * Update the subscription.<br>Arguments:<br><br>loginEmail: Login
     * Email of Spread.<br>APIKey: API Key of Spread.<br>subscriptionID:
     * The ID of Subscription.<br>newSubscriptionName: New name of Subscription.<br>newDescription:
     * New description of Subscription<br><br>return true if succeed.
     */
    public boolean updateSubscription(java.lang.String loginEmail, java.lang.String APIKey, int subscriptionID, java.lang.String newSubscriptionName, java.lang.String newDescription) throws java.rmi.RemoteException;
 
    /**
     * Delete the subscription.<br>Arguments:<br><br>loginEmail: Login
     * Email of Spread.<br>APIKey: API Key of Spread.<br>subscriptionName:
     * The Name of Subscription<br><br>return true if succeed.
     */
    public boolean deleteSubscription(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String subscriptionName) throws java.rmi.RemoteException;
 
    /**
     * Create a new Contact List.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>subscriptionName:
     * Subscription Name<br>description: Description of the new subscription.<br><br>return
     * true if succeed.
     */
    public boolean createContactList(java.lang.String loginEmail, java.lang.String password, java.lang.String subscriptionName, java.lang.String description) throws java.rmi.RemoteException;
 
    /**
     * Add new/existing subscriber into a subscription.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>subscriberEmails:
     * Subscriber's emails to be added.<br>subscription: The subscription
     * where the subscriber being added.<br>optInType: Double Opt-In Option.<br><br>return
     * true if the subscriber need to be confirmed.<br><br>Remarks: Subscriber
     * would receive confirmation email if user's Double Opt-in option is
     * ON.
     */
    public boolean addSubscriberByEmail(java.lang.String loginEmail, java.lang.String password, java.lang.String subscriberEmail, java.lang.String subscription, com.gear.common.utils.emailsq.service.DoubleOptIn optInType) throws java.rmi.RemoteException;
 
    /**
     * Delete subscribers from contact list.<br>Arguments:<br><br>loginEmail:
     * Spread accpunt.<br>password:  Password of Spread.<br>subscriberEmails:
     * Array of Subscriber's emails<br>subscription: Delete from which contat
     * list.<br>
     */
    public int deleteSubscribersFromList(java.lang.String loginEmail, java.lang.String password, java.lang.String[] subscriberEmails, java.lang.String subscription) throws java.rmi.RemoteException;
 
    /**
     * Delete subscribers from account.<br>Arguments:<br><br>loginEmail:
     * Spread account.<br>password:  APIKEY/Password of Spread.<br>subscriberEmails:
     * Array of Subscriber's emails.<br>
     */
    public int deleteSubscribersFromAccount(java.lang.String loginEmail, java.lang.String password, java.lang.String[] subscriberEmails) throws java.rmi.RemoteException;
 
    /**
     * Add new/existing subscriber into a subscription.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>SubscriberArgs:
     * email, firstName, middleName, lastName, jobTitle, company, homePhone,
     * address1, address2, address3, city, state, country,postalCode, subPostalCode,
     * customField1, customField2, customField3.<br>subscription: The subscription
     * where the subscriber being added.<br>optInType: Double Opt-In Option.<br><br>return
     * true if the subscriber need to be confirmed.<br><br>Remarks: Subscriber
     * would receive confirmation email if user's Double Opt-in option is
     * ON.
     */
    public boolean addSubscriberByInfo(java.lang.String loginEmail, java.lang.String password, com.gear.common.utils.emailsq.service.Subscriber subscriberArgs, java.lang.String subscription, com.gear.common.utils.emailsq.service.DoubleOptIn optInType) throws java.rmi.RemoteException;
 
    /**
     * Add new/existing subscribers into a subscription.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>SubscriberArgs():
     * email, firstName, middleName, lastName, jobTitle, company, homePhone,
     * address1, address2, address3, city, state, country,postalCode, subPostalCode,
     * customField1, customField2, customField3.<br>subscription: The subscription
     * where the subscriber being added.<br>optInType: Double Opt-In Option.<br><br>return
     * dataset containing error messages if any.<br><br>Remarks: Subscriber
     * would receive confirmation email if user's Double Opt-in option is
     * ON.
     */
    public com.gear.common.utils.emailsq.service.AddSubscribersByInfoResponseAddSubscribersByInfoResult addSubscribersByInfo(java.lang.String loginEmail, java.lang.String password, com.gear.common.utils.emailsq.service.Subscriber[] subscriberArgs, java.lang.String subscription, com.gear.common.utils.emailsq.service.DoubleOptIn optInType) throws java.rmi.RemoteException;
 
    /**
     * Add new/existing subscribers into a subscription.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>SubscriberArgs():
     * email, firstName, middleName, lastName, jobTitle, company, homePhone,
     * address1, address2, address3, city, state, country,postalCode, subPostalCode,
     * customField1, customField2, customField3.<br>subscription: The subscription
     * where the subscriber being added.<br>optInType: Double Opt-In Option.<br><br>return
     * dataset containing error messages if any.<br><br>Remarks: Subscriber
     * would receive confirmation email if user's Double Opt-in option is
     * ON.
     */
    public com.gear.common.utils.emailsq.service.ResponseResult addSubscribersByInfo2(java.lang.String loginEmail, java.lang.String password, com.gear.common.utils.emailsq.service.Subscriber[] subscriberArgs, java.lang.String subscription, com.gear.common.utils.emailsq.service.DoubleOptIn optInType) throws java.rmi.RemoteException;
 
    /**
     * Add new/existing subscribers into a subscription.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>SubscriberArgs():
     * email, firstName, middleName, lastName, jobTitle, company, homePhone,
     * address1, address2, address3, city, state, country,postalCode, subPostalCode,
     * customField1, customField2, customField3.<br>subscription: The subscription
     * where the subscriber being added.<br>optInType: Double Opt-In Option.<br><br>return
     * ResponseResult containing error messages if any.<br><br>Remarks: Subscriber
     * would receive confirmation email if user's Double Opt-in option is
     * ON.if the count of subscribers is larger than 100 , the subscribers
     * will be added in backgroud thread anda trackingId will be returned
     * in ResponseResult, or else save subscribers immediately and result
     * can be viewed in the errorDetails of ResponseResult for each subscribers
     */
    public com.gear.common.utils.emailsq.service.UploadResult uploadSubscribersInfo(java.lang.String loginEmail, java.lang.String password, com.gear.common.utils.emailsq.service.SubscriberInfo[] subscriberArgs, java.lang.String subscription, com.gear.common.utils.emailsq.service.DoubleOptIn optInType) throws java.rmi.RemoteException;
 
    /**
     * The same function as Send but you can set specify campaign
     * name instead of today as default campaign name.<br>Arguments:<br><br>LoginEmail:
     * Login Email of Spread.<br>Password: The password of your Spread account
     * or API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>CampaignName: The name of the campaign to be send. <br>From:
     * The email address of sender.<br> FromName, The name of sender.<br>[To]:
     * The email address of recipient.<br>Subject: The subject of the Email.<br>Body:
     * The content of the Email.<br><br>Remarks: The maximum daily limit
     * 20 different campaign Name.The contact will be automatically added
     * to the contact list named "Auto_ + Campaign Name". This function allows
     * duplicate sending, so the contact list may contains duplicate email.
     * Don't use this contact list in other campaigns, if you want to avoid
     * duplicate sending.
     */
    public java.lang.String send2(java.lang.String loginEmail, java.lang.String password, java.lang.String campaignName, java.lang.String from, java.lang.String fromName, java.lang.String to, java.lang.String subject, java.lang.String body) throws java.rmi.RemoteException;
 
    /**
     * The same function as Send but you can specify campaign name
     * instead of today as default campaign name.
     */
    public java.lang.String send3(java.lang.String loginEmail, java.lang.String password, java.lang.String campaignName, java.lang.String from, java.lang.String fromName, java.lang.String to, java.lang.String replyTo, java.lang.String subject, java.lang.String body) throws java.rmi.RemoteException;
 
    /**
     * Send Email with multi attachment .<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Password or API KEY of Spread.<br>CampaignName:
     * CampaignName <br>FromName: Display Name<br>[To]: The recipient <br>replyTo:Reply
     * Email address <br>Subject: Email subject.<br>Body: Email body.<br>files:Attachment
     * <br> return sent result (string).<br><br>Remarks: use POST method
     * to submit your data
     */
    public java.lang.String sendmultipleAttachment() throws java.rmi.RemoteException;
 
    /**
     * Send Email with multi attachment .<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Password or API KEY of Spread.<br>CampaignName:
     * CampaignName <br>FromName: Display Name<br>[To]: The recipient <br>replyTo:Reply
     * Email address <br>Subject: Email subject.<br>Body: Email body.<br>files:Attachment
     * structure,only for file types below :zip pdf docx doc xlsx xls rtf
     * txt gif jpeg jpg png tif bmp ppt pptx<br> return sent result (string).<br><br>Remarks:
     * use to send attachments.
     */
    public java.lang.String sendWithAttachment(java.lang.String loginEmail, java.lang.String password, java.lang.String campaignName, java.lang.String from, java.lang.String fromName, java.lang.String to, java.lang.String replyTo, java.lang.String subject, java.lang.String body, com.gear.common.utils.emailsq.service.CampaignAttachment[] files) throws java.rmi.RemoteException;
 
    /**
     * Send Email with multiple attachments .<br>Arguments:<br><br>LoginEmail:
     * Login Email of Spread account.<br>APIKey: API KEY of Spread.<br>[To]:
     * The Recipient. attention: The recipient defined in the template campaign
     * will not be sent. <br>Subject: the email subject, it will be the campaign
     * subject if empty.<br>TemplateId: Campaign ID.<br>SubstitutionVars:
     * tag's value in the content.<br>CreativeLanguage: Creative Language.<br>files:Attachment
     * structure,only for file types below :zip pdf docx doc xlsx xls rtf
     * txt gif jpeg jpg png tif bmp ppt pptx<br> return sent result (string).<br><br>Remarks:
     * use to send attachments.
     */
    public java.lang.String sendTemplateAttachments(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String to, java.lang.String templateId, java.lang.String subject, java.lang.String substitutionVars, java.lang.String creativeLanguage, com.gear.common.utils.emailsq.service.CampaignAttachment[] files) throws java.rmi.RemoteException;
 
    /**
     * send transactional email with 1 attachment.<br> Arguments:<br><br>LoginEmail:
     * Login Email of Spread account.<br>APIKey: API KEY of Spread.<br>[To]:
     * The Recipient. attention: The recipient defined in the template campaign
     * will not be sent. <br>Subject: the email subject, it will be the campaign
     * subject if empty.<br>TemplateId: Campaign ID.<br>SubstitutionVars:
     * tag's value in the content.<br>CreativeLanguage: Creative Language.<br>Attachment:The
     * upload file stream<br> AttachmentName:Attachment display name (include
     * extensions,for example 'file.zip')<br> return sent result(string).<br>Remarks:
     * use this method to send 1 attachment.
     */
    public java.lang.String sendTemplateAttachment(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String to, java.lang.String templateId, java.lang.String subject, java.lang.String substitutionVars, java.lang.String creativeLanguage, byte[] attachment, java.lang.String attachmentName) throws java.rmi.RemoteException;
 
    /**
     * send transactional email with 1 attachment.<br> Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Password or API KEY of Spread.<br>CampaignName:
     * CampaignName <br>FromName: Display Name<br>[To]: The recipient <br>replyTo:Reply
     * Email address <br>Subject: Email subject.<br>Body: Email body.<br>Attachment:The
     * upload file stream<br> AttachmentName:Attachment display name (include
     * extensions,for example 'file.zip')return sent result(string).<br>Remarks:
     * use this method to send 1 attachment.
     */
    public java.lang.String sendSimpleAttachment(java.lang.String loginEmail, java.lang.String password, java.lang.String campaignName, java.lang.String from, java.lang.String fromName, java.lang.String to, java.lang.String replyTo, java.lang.String subject, java.lang.String body, byte[] attachment, java.lang.String attachmentName) throws java.rmi.RemoteException;
 
    /**
     * Send email , return email id
     */
    public java.lang.String emailSend(java.lang.String loginEmail, java.lang.String password, java.lang.String from, java.lang.String fromName, java.lang.String to, java.lang.String subject, java.lang.String body) throws java.rmi.RemoteException;
 
    /**
     * Update Subsribers Status .<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Password or API KEY of Spread.<br>subscriberEmail:
     * Subscriber's email address <br>SubscriberStatus: Subscriber Status
     * Enum: Active, Unsubscribed, DoNotMail, Blacklist <br>return:'Update
     * Subscriber Status Success/Fail/Error'
     */
    public java.lang.String updateSubscriberStatus(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String subscriberEmail, com.gear.common.utils.emailsq.service.SubscriberStatus subscriberStatus) throws java.rmi.RemoteException;
 
    /**
     * Update member email
     */
    public java.lang.String updateMemberEmail(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String memberId, java.lang.String email) throws java.rmi.RemoteException;
 
    /**
     * Send email by Template, return email id.<br><br>Arguments:<br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or API
     * Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>MemberId. If there is no member id, please set 0.<br>Email:
     * The email address of recipient.<br>TemplateId: The TemplateId(CampaignID)
     * of email.<br>SubstitutionVars: It is a custom value of Json type.
     * If there is a tag named [CUSTOM] in campaign, then you can send :
     * {"[CUSTOM]":"Value"} .<br>CreativeLanguage: language, such as : en,en-us,zh-tw,zh-cn.<br><br>Return
     * email id.<br><br>Remarks: If you want to send the template, it should
     * be approved.<br>
     */
    public java.lang.String sendTemplateEmail(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String memberId, java.lang.String email, java.lang.String templateId, java.lang.String substitutionVars, java.lang.String creativeLanguage) throws java.rmi.RemoteException;
 
    /**
     * Send email one to one
     */
    public java.lang.String send(java.lang.String loginEmail, java.lang.String password, java.lang.String from, java.lang.String fromName, java.lang.String to, java.lang.String subject, java.lang.String body) throws java.rmi.RemoteException;
 
    /**
     * Send email one to one contain cc
     */
    public java.lang.String sendAndCc(java.lang.String loginEmail, java.lang.String password, java.lang.String campaignName, java.lang.String from, java.lang.String fromName, java.lang.String to, java.lang.String subject, java.lang.String body, java.lang.String[] cc) throws java.rmi.RemoteException;
 
    /**
     * Get email status(Request\Delivered\Opened\Clicked\Bounce\SPAM\Invalid)</br>Return
     * Email Status DataTable </br></br>LoginEmail: Login Email of Spread.</br>Password:
     * Login Password of Spread.</br>CampaignName: campaign name </br>Email
     * : subscriber's email address
     */
    public com.gear.common.utils.emailsq.service.GetCampaignEmailStatusResponseGetCampaignEmailStatusResult getCampaignEmailStatus(java.lang.String loginEmail, java.lang.String password, java.lang.String campaignName, java.lang.String email) throws java.rmi.RemoteException;
 
    /**
     * Get email status(Request\Delivered\Opened\Clicked\Bounce\SPAM\Invalid)</br>Return
     * emailId$status (123-456$Opened)</br></br>LoginEmail: Login Email of
     * Spread.</br>Password: Login Password of Spread.</br>EmailIds: EmailId,
     * semicolon(;) as delimiter.
     */
    public java.lang.String[] getEmailStatus(java.lang.String loginEmail, java.lang.String password, java.lang.String emailIds) throws java.rmi.RemoteException;
 
    /**
     * Get SMS status (0: unsuccessfully \ 1: successfully)</br>Return
     * Phone number$status (85212345678$1)</br></br>LoginEmail: Login Email
     * of Spread.</br>Password: Login Password of Spread.</br>CampaignId:
     * Campaign id
     */
    public java.lang.String[] getSMSStatus(java.lang.String loginEmail, java.lang.String password, java.lang.String campaignId) throws java.rmi.RemoteException;
 
    /**
     * For TalkKing,Get Campaigns send to TalkKing Users that campaign's
     * scheduleTime during [@startTime, 
     * @endTime).The timespan between 
     * @startTime and 
     * @endTime shouldn't be greater then 1 hour.
     */
    public java.lang.String getCampaignsSend2TalkkingUser(java.lang.String startTime, java.lang.String endTime, java.lang.String talkKingUserId, java.lang.String APIKey) throws java.rmi.RemoteException;
 
    /**
     * Send Batch
     */
    public com.gear.common.utils.emailsq.service.Server sendBatch(java.lang.String xml) throws java.rmi.RemoteException;
 
    /**
     * Get if subscribers satified the conditions,<b>it is only for
     * internal use currently</b> <br>Arguments:<br><br>loginEmail: Login
     * Email of Spread.<br>password: Login Password of Spread.<br>Criteria:
     * A string represent the Conditions in Json Formate.<br>TopN: Quantity
     * of subscribers needed <br>SaveAsList: Name of subscription to be created.if
     * more than one list,use ";" as seperator.e.g. listA;listB;listC<br>ForceCreate:
     * TRUE or FALSE. When number of subscribers returned less than TopN,if
     * TRUE then will create new list and FALSE will not.<br><br> Return
     * the number of subscribers that meet the condition.<br><br>Remark:
     * This function is currently for internal use.
     */
    public int searchContacts(java.lang.String loginEmail, java.lang.String password, java.lang.String criteria, int topN, java.lang.String saveAsList, boolean forceCreate) throws java.rmi.RemoteException;
 
    /**
     * Split the contact list. <br>Arguments:<br><br>loginEmail: Login
     * Email of Spread.<br>password: Login Password of Spread.<br>oldListName:The
     * name of old list name <br>SaveAsList: Name of subscription to be created.if
     * more than one list,use ";" as seperator.e.g. listA;listB;listC<br><br>return
     * true if succeed.
     */
    public boolean splitContacts(java.lang.String loginEmail, java.lang.String password, java.lang.String oldListName, java.lang.String saveAsList) throws java.rmi.RemoteException;
 
    /**
     * Set exclude lists to a campaign. <br>Arguments:<br><br>LoginEmail:
     * Login Email of Spread.<br>Password: Login Password of Spread.<br>CampaignNamedListName:The
     * name of campaign <br>ExcludeLists: Name of contact list.if more than
     * one list,use ";" as seperator.e.g. listA;listB;listC<br><br>return
     * count of list excluded.
     */
    public int excludeContactList(java.lang.String loginEmail, java.lang.String password, java.lang.String campaignName, java.lang.String excludeLists) throws java.rmi.RemoteException;
 
    /**
     * Get campaign detail report in a period of time for a campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>campaignID:campaign
     * id<br>subscriberEmail:subscriber Email,get subscriber sent status<br>return
     * dataset.<br><br>Dataset Columns:<br>
     */
    public com.gear.common.utils.emailsq.service.GetCampaignDetailReportResponseGetCampaignDetailReportResult getCampaignDetailReport(java.lang.String loginEmail, java.lang.String password, int campaignID, java.lang.String subscriberEmail) throws java.rmi.RemoteException;
 
    /**
     * Get send report in a period of time for a campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>campaignID:Campaign
     * ID<br>startDate:Starting time<br>endDate:End time<br><br>return Dataset.<br>Dataset
     * Columns:<br>subscriber_email, isSuccess,sending_status_time
     */
    public com.gear.common.utils.emailsq.service.GetCampaignSentsResponseGetCampaignSentsResult getCampaignSents(java.lang.String loginEmail, java.lang.String password, int campaignID, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get campaignopen report in a period of time for a campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>campaignID:
     * campaignIDstartDate:Starting time<br>endDate:End time<br><br>return
     * dataset.<br><br>
     */
    public com.gear.common.utils.emailsq.service.GetCampaignOpensResponseGetCampaignOpensResult getCampaignOpens(java.lang.String loginEmail, java.lang.String password, int campaignID, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get campaignopen report in a period of time for a campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>campaignID:
     * campaignID<br>startDate:Starting time<br>endDate:End time<br>pageNow:page
     * Number<br>pageSize:page Size<br>return dataset.<br><br>
     */
    public com.gear.common.utils.emailsq.service.GetCampaignOpensByPageResponseGetCampaignOpensByPageResult getCampaignOpensByPage(java.lang.String loginEmail, java.lang.String password, int campaignID, java.util.Calendar startDate, java.util.Calendar endDate, int pageNow, int pageSize) throws java.rmi.RemoteException;
 
    /**
     * Get campaignopen report in a period of time for a campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>campaignID:
     * campaignIDstartDate:Starting time<br>endDate:End time<br><br>return
     * json.<br><br>
     */
    public java.lang.String getCampaignOpensJson(java.lang.String loginEmail, java.lang.String password, int campaignID, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get open report in a period of time for a campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>startDate:Starting
     * time<br>endDate:End time<br><br>return dataset.<br><br>Dataset Columns:<br>subscriber_email,
     * email_opening_time,first_name,middle_name,last_name
     */
    public com.gear.common.utils.emailsq.service.GetCampaignOpensWithNameResponseGetCampaignOpensWithNameResult getCampaignOpensWithName(java.lang.String loginEmail, java.lang.String password, int campaignID, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get clicks report in a period of time for a campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>startDate:Starting
     * time<br>endDate:End time<br><br>return dataset.<br><br>Dataset Columns:<br>subscriber_email,date_clicked
     * ,url
     */
    public com.gear.common.utils.emailsq.service.GetCampaignClicksResponseGetCampaignClicksResult getCampaignClicks(java.lang.String loginEmail, java.lang.String password, int campaignID, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get clicks report in a period of time for a campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>startDate:Starting
     * time<br>endDate:End time<br><br>return dataset.<br><br>Dataset Columns:<br>subscriber_email,date_clicked
     * ,url,first_name,middle_name,last_name
     */
    public com.gear.common.utils.emailsq.service.GetCampaignClicksWithNameResponseGetCampaignClicksWithNameResult getCampaignClicksWithName(java.lang.String loginEmail, java.lang.String password, int campaignID, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get Unsubscribe report in a period of time for a campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>startDate:Starting
     * time<br>endDate:End time<br><br>return dataset.<br><br>Dataset Columns:<br>subscriber_email,
     * date
     */
    public com.gear.common.utils.emailsq.service.GetCampaignUnsubscribesResponseGetCampaignUnsubscribesResult getCampaignUnsubscribes(java.lang.String loginEmail, java.lang.String password, int campaignID, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get Unsubscribe report in a period of time for a account.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>startDate:Starting
     * time<br>endDate:End time<br><br>return dataset.<br><br>Dataset Columns:<br>subscriber_email,
     * date
     */
    public com.gear.common.utils.emailsq.service.GetAccountUnsubscribesResponseGetAccountUnsubscribesResult getAccountUnsubscribes(java.lang.String loginEmail, java.lang.String password, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get Unsubscribe report in a period of time for a account.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>startDate:Starting
     * time<br>endDate:End time<br><br>return string.<br><br>String message:<br>success
     * or fail
     */
    public java.lang.String getAccountUnsubscribesToFtp(java.lang.String loginEmail, java.lang.String password, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get abuse report in a period of time for a campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>startDate:Starting
     * time<br>endDate:End time<br><br>return dataset.<br><br>Dataset Columns:<br>subscriber_email,
     * date
     */
    public com.gear.common.utils.emailsq.service.GetCampaignAbusesResponseGetCampaignAbusesResult getCampaignAbuses(java.lang.String loginEmail, java.lang.String password, int campaignID, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get Conversion report in a period of time for a campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>startDate:Starting
     * time<br>endDate:End time<br><br>return dataset.<br><br>Dataset Columns:<br>subscriber_email,
     * conversion_time,value,type,url
     */
    public com.gear.common.utils.emailsq.service.GetCampaignConversionsResponseGetCampaignConversionsResult getCampaignConversions(java.lang.String loginEmail, java.lang.String password, int campaignID, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Please use GetCampaignConversions instead.
     */
    public com.gear.common.utils.emailsq.service.GetCampaignConvertionsResponseGetCampaignConvertionsResult getCampaignConvertions(java.lang.String loginEmail, java.lang.String password, int campaignID, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Get Bounces report in a period of time for a campaign.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>password: Login Password of Spread.<br>startDate:Starting
     * time<br>endDate:End time<br><br>return dataset.<br><br>Dataset Columns:<br>subscriber_email,type_name,chkdate
     */
    public com.gear.common.utils.emailsq.service.GetCampaignBouncesResponseGetCampaignBouncesResult getCampaignBounces(java.lang.String loginEmail, java.lang.String password, int campaignID, java.util.Calendar startDate, java.util.Calendar endDate) throws java.rmi.RemoteException;
 
    /**
     * Add Sender Email .<br/>Arguments:<br/><br/>loginEmail: Login
     * Email of Spread.<br>password: Login Password of Spread.<br>SenderEmail:
     * New Sender Email To Add.<br>return true if success.
     */
    public boolean addSenderEmail(java.lang.String loginEmail, java.lang.String password, java.lang.String senderEmail) throws java.rmi.RemoteException;
 
    /**
     * Delete Sender Email.<br/>Arguments:<br/><br/>loginEmail: Login
     * Email of Spread.<br>APIKey: API KEY of Spread.<br>senderEmail: The
     * Sender Email to be deleted.<br>return true if success.
     */
    public boolean deleteSenderEmail(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String senderEmail) throws java.rmi.RemoteException;
 
    /**
     * Get All Sender Email.<br>Arguments:<br><br>loginEmail: Login
     * Email of Spread account.<br>APIKey: API Key of Spread.<br>return dataset
     * result.
     */
    public com.gear.common.utils.emailsq.service.GetSenderEmailsResponseGetSenderEmailsResult getSenderEmails(java.lang.String loginEmail, java.lang.String APIKey) throws java.rmi.RemoteException;
 
    /**
     * Add Webhook Event .<br/>Arguments:<br/><br/>loginEmail: Login
     * Email of Spread.<br>password: Login Password of Spread.<br>Event:
     * Webhook event type.<br>enable: set status true or false. <br>return
     * execute result
     */
    public java.lang.String addOrUpdateWebhook(java.lang.String loginEmail, java.lang.String password, java.lang.String url, com.gear.common.utils.emailsq.service.EventType eventtype, boolean enable) throws java.rmi.RemoteException;
 
    /**
     * Create a new account.<strong>(This method is only for reseller.)</strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>loginPassword: Login Password of Spread.<br>newAccountName:
     * New account name <br>newAccountEmail: New account email<br><br>newAccountPassword:New
     * account password<br><br>return true if succeed.
     */
    public boolean createNewAccount(java.lang.String loginEmail, java.lang.String loginPassword, java.lang.String newAccountName, java.lang.String newAccountEmail, java.lang.String newAccountPassword) throws java.rmi.RemoteException;
 
    /**
     * Transfer credit to another account.<strong>(This method is
     * only for reseller.)</strong><br>Arguments:<br><br>loginEmail: Login
     * Email of Spread.<br>loginPassword: Login Password of Spread.<br>transferToEmail:
     * Email of transfer credit to user  <br>creditCount: Total amount of
     * transfer credit<br><br>return true if succeed.
     */
    public boolean transferCredit(java.lang.String loginEmail, java.lang.String loginPassword, java.lang.String transferToEmail, int creditCount) throws java.rmi.RemoteException;
 
    /**
     * Upload zip files as mail contents.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>loginPassword: Login Password of Spread.<br>fileStream:
     * The zip file stream  <br>campaignId: Campaign ID.If campaignid is
     * nothing,create new campaign.<br><br>return true if succeed.
     */
    public boolean uploadZipFile(java.lang.String loginEmail, java.lang.String loginPassword, byte[] fileStream, int campaignId) throws java.rmi.RemoteException;
 
    /**
     * Upload contact file .<br>Arguments:<br><br>loginEmail: Login
     * Email of Spread.<br>loginPassword: Login Password of Spread.<br>fileType:
     * Type of upload data, include ".xls", ".csv", ".xlsx" <br>fileStream:
     * The upload file stream ( length<100MB ) <br>ContactListName: the name
     * of contact list .<br><br>return:  result
     */
    public java.lang.String uploadContactListFile(java.lang.String loginEmail, java.lang.String loginPassword, java.lang.String fileType, byte[] myFileStream, java.lang.String contactListName) throws java.rmi.RemoteException;
 
    /**
     * Activation campaign by ftp file.<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>loginPassword: Login Password of Spread.<br>fileType:
     * Type of upload data, include ".xls", ".csv", ".xlsx" <br>ContactListName:
     * the name of contact list .<br><br>campaignId: Need to be activated
     * by the campaignId <br>ftpIp: Ftp IP <br>ftpUser: Ftp User <br>ftpPassword:
     * Ftp Password <br>ftpFilePath: Ftp FilePath <br>return:  result
     */
    public java.lang.String activationCampaignByFtpFile(java.lang.String loginEmail, java.lang.String loginPassword, java.lang.String fileType, java.lang.String contactListName, int campaignId, java.lang.String ftpIp, java.lang.String ftpUser, java.lang.String ftpPassword, java.lang.String ftpFilePath) throws java.rmi.RemoteException;
 
    /**
     * Validate Name exists<strong>(This method is only for reseller.)</strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>accountName:New account name<br>return: true if exists.Otherwise,false
     */
    public boolean nameExists(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String accountName) throws java.rmi.RemoteException;
 
    /**
     * Validate Email exists<strong>(This method is only for reseller.)</strong><br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>APIKey: Login Password of Spread or APIKey
     * API Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>accountEmail:New account name<br>return: true if exists.Otherwise,false
     */
    public boolean emailExists(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String accountEmail) throws java.rmi.RemoteException;
 
    /**
     * Validate Campaign exists<br>Arguments:<br><br>loginEmail: Login
     * Email of Spread.<br>APIKey: Login Password of Spread or APIKey API
     * Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>campaignName: Name of the campaign<br>return:campaign
     * ID
     */
    public int getCampaignID(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String campaignName) throws java.rmi.RemoteException;
 
    /**
     * Get access token<br>Arguments:<br><br>loginEmail: Login Email
     * of Spread.<br>APIKey: Login Password of Spread or APIKey API Key which
     * you can retrieve from your Spread account (My account=> Settings).<br>return:access
     * token
     */
    public java.lang.String getAccessToken(java.lang.String loginEmail, java.lang.String APIKey) throws java.rmi.RemoteException;
 
    /**
     * Verify access token<br>Arguments:<br><br>emailAddress:The emailAddress
     * of user<br>token: Access token<br>return true if succeed.
     */
    public boolean verifyAccessToken(java.lang.String emailAddress, java.lang.String token) throws java.rmi.RemoteException;
 
    /**
     * Get APIKey<br>Arguments:<br><br>loginEmail: Login Email of
     * Spread.<br>loginPassword: Login Password of Spread.<br>return:APIKey
     */
    public java.lang.String getAPIKey(java.lang.String loginEmail, java.lang.String loginPassword) throws java.rmi.RemoteException;
 
    /**
     * Get Account detail information<br>Arguments:<br><br>loginEmail:
     * Login Email of Spread.<br>loginPassword: Login Password of Spread.<br>return:table
     * column:EmailCredit,SentCount,MaxSubscriber,CurrentSubscribers,ExpiryDate,Status
     */
    public com.gear.common.utils.emailsq.service.GetAccountInfoResponseGetAccountInfoResult getAccountInfo(java.lang.String loginEmail, java.lang.String loginPassword) throws java.rmi.RemoteException;
 
    /**
     * Setting Campaign DailyLimit<strong>(It is only for internal
     * use currently.)</strong><br>Arguments:<br><br>loginEmail: Login Email
     * of Spread.<br>APIKey: Login Password of Spread or APIKey API Key which
     * you can retrieve from your Spread account (My account=> Settings).<br>campaignID:The
     * Campaign ID which you want to set.<br>return true if success.
     */
    public boolean setCampaignDailyLimit(java.lang.String loginEmail, java.lang.String APIKey, int campaignid, int quantity) throws java.rmi.RemoteException;
 
    /**
     * Setting Campaign TimeLimit<strong>(It is only for internal
     * use currently.)</strong><br>Arguments:<br><br>loginEmail: Login Email
     * of Spread.<br>APIKey: Login Password of Spread or APIKey API Key which
     * you can retrieve from your Spread account (My account=> Settings).<br>campaignID:
     * The Campaign ID which you want to set.<br>TimeSpan: Send time limit
     * of campaign. format like: [ { '1': ['01:00-02:00','01:00-02:00'] },
     * { '2': ['01:00-02:00','01:00-02:00'] } ]<br>'0' means every day, '1':
     * Monday, '2': Tuesday,'3': Wednesday, '4': Thursday,'5': Friday, '6':
     * Saturday, '7': Sunday<br>return true if success.
     */
    public boolean setCampaignTimeLimit(java.lang.String loginEmail, java.lang.String APIKey, int campaignid, java.lang.String timeSpan) throws java.rmi.RemoteException;
 
    /**
     * SplitContactListByRange<strong>(It is only for internal use
     * currently.)</strong><br>Arguments:<br><br>loginEmail: Login Email
     * of Spread.<br>APIKey: Login Password of Spread or APIKey API Key which
     * you can retrieve from your Spread account (My account=> Settings).<br>SourceContactListName:
     * The Contact List which you want to split.<br>Range: The Range of Contact
     * List, format like: 0~10 <br>TargetContactListName: The Contact List
     * Which you want to insert.<br>return true if success.
     */
    public boolean splitContactListByRange(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String sourceContactListName, java.lang.String range, java.lang.String targetContactListName) throws java.rmi.RemoteException;
 
    /**
     * getActiveSubscribersByContactList(It is only for internal use
     * currently.)<strong></strong><br>Arguments:<br><br>loginEmail: Login
     * Email of Spread.<br>APIKey: Login Password of Spread or APIKey API
     * Key which you can retrieve from your Spread account (My account=>
     * Settings).<br>contactListName: The Contact List you want to do.<br>return
     * the count of active subscribers.
     */
    public int getActiveSubscribersByContactList(java.lang.String loginEmail, java.lang.String APIKey, java.lang.String contactListName) throws java.rmi.RemoteException;
 
    /**
     * <b>(It is only for internal use currently.)</b>
     */
    public int createCampaignDraftSerialize(java.lang.String loginEmail, java.lang.String password, java.lang.String strcampaignArgs, java.lang.String[] category, int interval) throws java.rmi.RemoteException;
 
    /**
     * <b>(It is only for internal use currently.)</b>
     */
    public int createCampaignSerialize(java.lang.String loginEmail, java.lang.String password, java.lang.String strcampaignArgs, java.lang.String[] category, int interval) throws java.rmi.RemoteException;
 
    /**
     * <b>(It is only for internal use currently.)</b>
     */
    public int createCampaign2Serialize(java.lang.String loginEmail, java.lang.String password, java.lang.String campaignName, java.lang.String strcampaignCreatives, java.lang.String[] category, int interval, java.util.Calendar schedule, java.lang.String signature, com.gear.common.utils.emailsq.service.CampaignStatus campaignStatus) throws java.rmi.RemoteException;
 
    /**
     * <b>(It is only for internal use currently.)</b>
     */
    public java.lang.String getCampaignReportSerialize(java.lang.String loginEmail, java.lang.String password, int campaignID) throws java.rmi.RemoteException;
}