Skip to content

Commit 7d0573f

Browse files
Merge pull request #84 from mailjet/dnefodov/feature/add-code-samples
Dnefodov: Add code samples
2 parents 1a824d0 + 66b8b8b commit 7d0573f

File tree

11 files changed

+755
-1
lines changed

11 files changed

+755
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,4 @@ junit*
3131
build/
3232
dist/
3333
venv/
34+
.idea/

mailjet_rest/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
requests.packages.urllib3.disable_warnings()
1313

1414

15-
def prepare_url(key: str):
15+
def prepare_url(key):
1616
"""Replaces capital letters to lower one with dash prefix."""
1717
char_elem = key.group(0)
1818
if char_elem.isupper():

samples/campaign_sample.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
import json
2+
import os
3+
4+
from mailjet_rest import Client
5+
6+
mailjet30 = Client(auth=(os.environ["MJ_APIKEY_PUBLIC"],
7+
os.environ["MJ_APIKEY_PRIVATE"]))
8+
9+
mailjet31 = Client(auth=(os.environ["MJ_APIKEY_PUBLIC"],
10+
os.environ["MJ_APIKEY_PRIVATE"]),
11+
version="v3.1")
12+
13+
14+
def create_a_campaign_draft():
15+
"""POST https://api.mailjet.com/v3/REST/campaigndraft"""
16+
data = {
17+
"Locale": "en_US",
18+
"Sender": "MisterMailjet",
19+
"SenderEmail": "[email protected]",
20+
"Subject": "Greetings from Mailjet",
21+
"ContactsListID": "$ID_CONTACTSLIST",
22+
"Title": "Friday newsletter"
23+
}
24+
return mailjet30.campaigndraft.create(data=data)
25+
26+
27+
def by_adding_custom_content():
28+
"""POST https://api.mailjet.com/v3/REST/campaigndraft/$draft_ID/detailcontent"""
29+
_id = "$draft_ID"
30+
data = {
31+
"Headers": "object",
32+
"Html-part": "<h3>Dear passenger, welcome to Mailjet!</h3><br />May the delivery force be with you!",
33+
"MJMLContent": "",
34+
"Text-part": "Dear passenger, welcome to Mailjet! May the delivery force be with you!"
35+
}
36+
return mailjet30.campaigndraft_detailcontent.create(id=_id, data=data)
37+
38+
39+
def test_your_campaign():
40+
"""POST https://api.mailjet.com/v3/REST/campaigndraft/$draft_ID/test"""
41+
_id = "$draft_ID"
42+
data = {
43+
"Recipients": [
44+
{
45+
"Email": "[email protected]",
46+
"Name": "Passenger 1"
47+
}
48+
]
49+
}
50+
return mailjet30.campaigndraft_test.create(id=_id, data=data)
51+
52+
53+
def schedule_the_sending():
54+
"""POST https://api.mailjet.com/v3/REST/campaigndraft/$draft_ID/schedule"""
55+
_id = "$draft_ID"
56+
data = {
57+
"Date": "2018-01-01T00:00:00"
58+
}
59+
return mailjet30.campaigndraft_schedule.create(id=_id, data=data)
60+
61+
62+
def send_the_campaign_right_away():
63+
"""POST https://api.mailjet.com/v3/REST/campaigndraft/$draft_ID/send"""
64+
_id = "$draft_ID"
65+
return mailjet30.campaigndraft_send.create(id=_id)
66+
67+
68+
def api_call_requirements():
69+
"""POST https://api.mailjet.com/v3.1/send"""
70+
data = {
71+
"Messages": [
72+
{
73+
"From": {
74+
"Email": "[email protected]",
75+
"Name": "Mailjet Pilot"
76+
},
77+
"To": [
78+
{
79+
"Email": "[email protected]",
80+
"Name": "passenger 1"
81+
}
82+
],
83+
"Subject": "Your email flight plan!",
84+
"TextPart": "Dear passenger 1, welcome to Mailjet! May the delivery force be with you!",
85+
"HTMLPart": "<h3>Dear passenger 1, welcome to <a "
86+
"href=\"https://www.mailjet.com/\">Mailjet</a>!</h3><br />May the delivery force be with "
87+
"you!",
88+
"CustomCampaign": "SendAPI_campaign",
89+
"DeduplicateCampaign": True
90+
}
91+
]
92+
}
93+
return mailjet31.send.create(data=data)
94+
95+
96+
if __name__ == "__main__":
97+
result = create_a_campaign_draft()
98+
print(result.status_code)
99+
try:
100+
print(json.dumps(result.json(), indent=4))
101+
except json.decoder.JSONDecodeError:
102+
print(result.text)

samples/contacts_sample.py

Lines changed: 274 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,274 @@
1+
import json
2+
import os
3+
4+
from mailjet_rest import Client
5+
6+
mailjet30 = Client(auth=(os.environ["MJ_APIKEY_PUBLIC"],
7+
os.environ["MJ_APIKEY_PRIVATE"]))
8+
9+
mailjet31 = Client(auth=(os.environ["MJ_APIKEY_PUBLIC"],
10+
os.environ["MJ_APIKEY_PRIVATE"]),
11+
version="v3.1")
12+
13+
14+
def create_a_contact():
15+
"""POST https://api.mailjet.com/v3/REST/contact"""
16+
data = {
17+
"IsExcludedFromCampaigns": "true",
18+
"Name": "New Contact",
19+
"Email": "[email protected]"
20+
}
21+
return mailjet30.contact.create(data=data)
22+
23+
24+
def create_contact_metadata():
25+
"""POST https://api.mailjet.com/v3/REST/contactmetadata"""
26+
data = {
27+
"Datatype": "str",
28+
"Name": "first_name",
29+
"NameSpace": "static"
30+
}
31+
return mailjet30.contactmetadata.create(data=data)
32+
33+
34+
def edit_contact_data():
35+
"""PUT https://api.mailjet.com/v3/REST/contactdata/$contact_ID"""
36+
_id = "*********" # Put real ID to make it work.
37+
data = {
38+
"Data": [
39+
{
40+
"Name": "first_name",
41+
"Value": "John"
42+
}
43+
]
44+
}
45+
return mailjet30.contactdata.update(id=_id, data=data)
46+
47+
48+
def manage_contact_properties():
49+
"""POST https://api.mailjet.com/v3/REST/contactmetadata"""
50+
_id = "$contact_ID"
51+
data = {
52+
"Data": [
53+
{
54+
"Name": "first_name",
55+
"Value": "John"
56+
}
57+
]
58+
}
59+
return mailjet30.contactdata.update(id=_id, data=data)
60+
61+
62+
def create_a_contact_list():
63+
"""POST https://api.mailjet.com/v3/REST/contactslist"""
64+
data = {
65+
"Name": "my_contactslist"
66+
}
67+
return mailjet30.contactslist.create(data=data)
68+
69+
70+
def add_a_contact_to_a_contact_list():
71+
"""POST https://api.mailjet.com/v3/REST/listrecipient"""
72+
data = {
73+
"IsUnsubscribed": "true",
74+
"ContactID": "987654321",
75+
"ContactAlt": "[email protected]",
76+
"ListID": "123456",
77+
"ListAlt": "abcdef123"
78+
}
79+
return mailjet30.listrecipient.create(data=data)
80+
81+
82+
def manage_the_subscription_status_of_an_existing_contact():
83+
"""POST https://api.mailjet.com/v3/REST/contact/$contact_ID
84+
/managecontactslists"""
85+
_id = "$contact_ID"
86+
data = {
87+
"ContactsLists": [
88+
{
89+
"Action": "addforce",
90+
"ListID": "987654321"
91+
},
92+
{
93+
"Action": "addnoforce",
94+
"ListID": "987654321"
95+
},
96+
{
97+
"Action": "remove",
98+
"ListID": "987654321"
99+
},
100+
{
101+
"Action": "unsub",
102+
"ListID": "987654321"
103+
}
104+
]
105+
}
106+
return mailjet30.contact_managecontactslists.create(id=_id, data=data)
107+
108+
109+
def manage_multiple_contacts_in_a_list():
110+
"""POST https://api.mailjet.com/v3/REST/contactslist/$list_ID
111+
/managemanycontacts"""
112+
_id = "$list_ID"
113+
data = {
114+
"Action": "addnoforce",
115+
"Contacts": [
116+
{
117+
"Email": "[email protected]",
118+
"IsExcludedFromCampaigns": "false",
119+
"Name": "Passenger 1",
120+
"Properties": "object"
121+
}
122+
]
123+
}
124+
return mailjet30.contactslist_managemanycontacts.create(id=_id, data=data)
125+
126+
127+
def monitor_the_upload_job():
128+
"""GET https://api.mailjet.com/v3/REST/contactslist/$list_ID
129+
/managemanycontacts"""
130+
_id = "$list_ID"
131+
return mailjet30.contactslist_managemanycontacts.get(id=_id)
132+
133+
134+
def manage_multiple_contacts_across_multiple_lists():
135+
"""POST https://api.mailjet.com/v3/REST/contact/managemanycontacts"""
136+
data = {
137+
"Contacts": [
138+
{
139+
"Email": "[email protected]",
140+
"IsExcludedFromCampaigns": "false",
141+
"Name": "Passenger 1",
142+
"Properties": "object"
143+
}
144+
],
145+
"ContactsLists": [
146+
{
147+
"Action": "addforce",
148+
"ListID": "987654321"
149+
},
150+
{
151+
"Action": "addnoforce",
152+
"ListID": "987654321"
153+
},
154+
{
155+
"Action": "remove",
156+
"ListID": "987654321"
157+
},
158+
{
159+
"Action": "unsub",
160+
"ListID": "987654321"
161+
}
162+
]
163+
}
164+
return mailjet30.contact_managemanycontacts.create(data=data)
165+
166+
167+
def upload_the_csv():
168+
"""POST https://api.mailjet.com/v3/DATA/contactslist
169+
/$ID_CONTACTLIST/CSVData/text:plain"""
170+
f = open("./data.csv")
171+
return mailjet30.contactslist_csvdata.create(
172+
id="$ID_CONTACTLIST",
173+
data=f.read(),
174+
)
175+
176+
177+
def import_csv_content_to_a_list():
178+
"""POST https://api.mailjet.com/v3/REST/csvimport"""
179+
data = {
180+
"ErrTreshold": "1",
181+
"ImportOptions": "",
182+
"Method": "addnoforce",
183+
"ContactsListID": "123456",
184+
"DataID": "98765432123456789"
185+
}
186+
return mailjet30.csvimport.create(data=data)
187+
188+
189+
def using_csv_with_atetime_contact_data():
190+
"""POST https://api.mailjet.com/v3/REST/csvimport"""
191+
data = {
192+
"ContactsListID": "$ID_CONTACTLIST",
193+
"DataID": "$ID_DATA",
194+
"Method": "addnoforce",
195+
"ImportOptions": "{\"DateTimeFormat\": \"yyyy/mm/dd\","
196+
"\"TimezoneOffset\": 2,\"FieldNames\": "
197+
"[\"email\", \"birthday\"]} "
198+
}
199+
return mailjet30.csvimport.create(data=data)
200+
201+
202+
def monitor_the_import_progress():
203+
"""GET https://api.mailjet.com/v3/REST/csvimport/$importjob_ID"""
204+
_id = "$importjob_ID"
205+
return mailjet30.csvimport.get(id=id)
206+
207+
208+
def error_handling():
209+
"""https://api.mailjet.com/v3/DATA/BatchJob/$job_id/CSVError/text:csv"""
210+
"""Not available in Python, please refer to Curl"""
211+
212+
213+
def single_contact_exclusion():
214+
"""PUT https://api.mailjet.com/v3/REST/contact/$ID_OR_EMAIL"""
215+
_id = "$ID_OR_EMAIL"
216+
data = {
217+
"IsExcludedFromCampaigns": "true"
218+
}
219+
return mailjet30.contact.update(id=_id, data=data)
220+
221+
222+
def using_contact_managemanycontacts():
223+
"""POST https://api.mailjet.com/v3/REST/contact/managemanycontacts"""
224+
data = {
225+
"Contacts": [
226+
{
227+
"Email": "[email protected]",
228+
"Name": "Jim",
229+
"IsExcludedFromCampaigns": "true",
230+
"Properties": {
231+
"Property1": "value",
232+
"Property2": "value2"
233+
}
234+
},
235+
{
236+
"Email": "[email protected]",
237+
"Name": "Janet",
238+
"IsExcludedFromCampaigns": "true",
239+
"Properties": {
240+
"Property1": "value",
241+
"Property2": "value2"
242+
}
243+
}
244+
]
245+
}
246+
return mailjet30.contact_managemanycontacts.create(data=data)
247+
248+
249+
def using_csvimport():
250+
"""POST https://api.mailjet.com/v3/REST/csvimport"""
251+
data = {
252+
"DataID": "$ID_DATA",
253+
"Method": "excludemarketing"
254+
}
255+
return mailjet30.csvimport.create(data=data)
256+
257+
258+
def retrieve_a_contact():
259+
"""GET https://api.mailjet.com/v3/REST/contact/$CONTACT_EMAIL"""
260+
_id = "$CONTACT_EMAIL"
261+
return mailjet30.contact.get(id=_id)
262+
263+
264+
def delete_the_contact():
265+
"""DELETE https://api.mailjet.com/v4/contacts/{contact_ID}"""
266+
267+
268+
if __name__ == "__main__":
269+
result = edit_contact_data()
270+
print(result.status_code)
271+
try:
272+
print(json.dumps(result.json(), indent=4))
273+
except json.decoder.JSONDecodeError:
274+
print(result.text)

0 commit comments

Comments
 (0)