Settings, tools and software we recommend to make use of FTPZIP the proper way include...
- A valid MailUp account
- A valid MailUp FTP account: please ask your sales representative to create one for you. As mentioned above, additional fees may apply.
- An FTP client such as FileZilla is highly recommended even if not strictly necessary.
- A text editor such as Notepad++ is recommended, even though Windows notepad is fine either way.
- A Zip software such as WinZip or WinRAR. (Windows users). If you’re using MAC OSX you won’t need any additional software to pack your files into an archive.
- We recommend acquaintance and familiarity with XML, HTML and CSV formats.
Why using a ZIP archive?
What has a Zip file to do with the dispatch or with the creation of an email campaign? The Zip archive is nothing more than a container that FTPZIP will unpack and process to create a campaign and/or to schedule it for sending. Depending on the actual scope of the upload, the submitted ZIP archive may enclose different sets of files in there.
Normally FTPZIP will expect a ZIP archive made of :
- A file called Settings.xml that will contain general settings (Required)
- A file called Markup.htm that will contain the HTML email message (Optional for ActionType=="send". Required for ActionType == "full" )
- A file called Recipients.csv that will contain the campaign recipients (Optional for ActionType=="save". Required only for ActionType == “full”)
- Image files (Optional)
- Attachments folder (Optional, only if Attachments key == “true” in your Settings.xml file)
Settings.xml
It is the only mandatory content of the ZIP Archive.
Settings.xml will contain in XML format:
- the target list the process will run against
- the campaign subject
- sender name and email
- many other settings FTPZIP will read before running each process
XML structure is divided in three main nodes:
- Header: General data regarding FTPZIP operations
- Content: Data about the Mailing that will be executed
- AdvancedSettings: Data about message creation, Kind of Mailing, CSV File features.
Below a working example. In most cases you can copy this xml content and use it for your own purposes, of course changing the variables that need to be changed to match you MailUp account and campaign needs.
<?xml version="1.0" encoding="UTF-8"?>
<FtpZip>
<Header>
<ActionType>full</ActionType>
<CampaignCode>Campaign0009</CampaignCode>
<FormatVersion>0.1</FormatVersion>
<NotifyEmail>peter@example.com</NotifyEmail>
</Header>
<Content>
<ListId>1</ListId>
<ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID>
<SenderName>John Doe</SenderName>
<SenderEmail>john@doe.com</SenderEmail>
<ReplyToEmail>jane@doe.com</ReplyToEmail>
<EmailSubject>Campaign0009</EmailSubject>
<ScheduleDateTime>2014-11-04T11:20:00.000</ScheduleDateTime>
<ScheduleTimeZone>6</ScheduleTimeZone>
<Notes>Notes for campaign 00009</Notes>
</Content>
<AdvancedSettings>
<Separator>;</Separator>
<Attachments>false</Attachments>
<DynamicFields>true</DynamicFields>
<EmbeddedImages>false</EmbeddedImages>
<LinkTracking>true</LinkTracking>
<HttpLinkTracking>true</HttpLinkTracking>
<HttpsLinkTracking>true</HttpsLinkTracking>
<MailToTracking>false</MailToTracking>
<FtpTracking>true</FtpTracking>
<NewsTracking>true</NewsTracking>
<QueryStringAdditionalParams></QueryStringAdditionalParams>
<ContentOverride>
<MessageId>1136</MessageId>
<CloneMessage>true</CloneMessage>
</ContentOverride>
<SendType>transactional</SendType>
<Transactional>
<Username>sxxxxxxx</Username>
<Password>xxxxxxxx</Password>
<AggregationCode>xxxxxxx</AggregationCode>
<KeepDuplicates>false</KeepDuplicates>
</Transactional>
</AdvancedSettings>
</FtpZip>
Click here to see settings details
Name | Type | Requires value? | Sample values | Meaning | Notes |
---|
ActionType | string | Y | One between "save", "full" or "send" | The kind of action FTPZIP will take with regard to the submitted ZIP archive. When set to save, FTPZIP will only create an email message without importing any recipient or scheduling any mailings. | ActionType is a very important field as its value drives a big shift in the executed tasks. |
CampaignCode | string | Y | Any | This is a unique identifier for the campaign. FTPZIP will read this value at each session to prevent users from uploading the same campaign twice by mistake. | |
FormatVersion | string | Y | < 0.1 | 0.2 > | This value indicates the kind of xml validation FTPZIP wil run. Current implemented format is 0.1, and it will run xml validation againts its xsd schema definition file. | |
NotifyEmail | String | N | peter@example.com | An email report containing the process result (success/failure) is sent to the specified address. | Recommended, it is the only way to receive an automated notification in case of errors |
Node <Content>
Name | Type | Requires value? | Sample values | Meaning | Notes |
---|
ListId | int | Y | < 1 | 2 | 3 > | The numeric identifier for the List in the MailUp account in which the various tasks will be executed (creation of the message, import of recipients, etc.). This is unique within a MailUp account, but not across MailUp accounts. | To locate your lists id’s please see: http://help.mailup.com/display/mailupapi/Codes+Table+and+List+GUID |
ListGUID | String | Y | b947d468-2751-40a7-83bf-1ecca0bbd6a1 | The unique identifier for each List across all MailUp accounts. ListID and ListGUID must refer to the same List. | To locate your lists Guid’s, please see: http://help.mailup.com/display/mailupapi/Codes+Table+and+List+GUID |
SenderName | String | N | | The display name for the sender in the campaign being created/sent | If empty, the default value for the List will be used. |
SenderEmail | String | N | | The email address that the campaign will be sent from | If empty, the default value for the List will be used. Mind that this is not an arbitrary field, the sender Email has to be approved withing your admin account to prevent any kind spam like activities. |
ReplyToEmail | String | N | example@email.com | The email address used when the subscriber reply to the received campaign. | If empty, the default value for the List will be used. |
EmailSubject | String | N | | The email message subject | |
Notes | String | N | This is a note | The email message note | |
ScheduleDateTime | String | N | | The date/time at which the campaign will be sent. If time is too close to current time, or already in past, or left empty, campaign will be sent out immediately. | If you upload many ZIP files with the same scheduled date and time, mailing will run in parallel. If you upload many ZIP files without a scheduled date, mailing will run sequentially, according to the file detection order. If the scheduled date and time is earlier than the actual processing time, the scheduled date&time will be ignored and mailing will be sequential Transactional Mailing can't be scheduled, so this configuration will be ignored if SendType is transactional. |
ScheduleTimeZone | String | N | 6 | The time zone schedulation will occur for.Please see the time zone reference at the bottom of this section. | if unspecified it will be used western european standard time zone as default. ( GMT+ 1 ). 38 will be used as default when this values has not been specified. It also takes into consideration Daylight saving time for each area. Transactional Mailing can't be scheduled, so this configuration will be ignored if SendType is transactional. |
Node AdvancedSettings
Name | Type | Requires value? | Sample values | Meaning | Notes |
Separator | String | Y if ActionType set to Full, N if set to Newslettter | ; | The column delimiter used in the Recipients.csv file. | |
Attachments | Bool (string) | Y | < true | false > | Attach files to current mailer campaign | If set to true FTPZIP will expect the folder attachments to be included in the submitted ZIP archive |
DynamicFields | Bool (string) | Y | < true | false > | Toggles dynamic fields | |
EmbeddedImages | Bool (string) | Y | < true | false > | Toggles use of embedded images | |
LinkTracking | Bool (string) | Y | < true | false > | Toggles link tracking | |
HttpLinkTracking | Bool (string) | Y | < true | false > | Toggles plain http link tracking | |
HttpsLinkTracking | Bool (string) | Y | < true | false > | Toggles https link tracking | |
MailToTracking | Bool (string) | Y | < true | false > | Toggles Mailto tracking | |
FtpTracking | Bool (string) | Y | < true | false > | Toggles FTP tracking | |
NewsTracking | Bool (string) | Y | < true | false > | Toggles News Tracking | |
QueryStringAdditionalParams | String | N | utm_medium=email&utm_campaign=Nov14+offers | Appends a querystring to all included links | Suitable for third party campaign tracking systems such as Google Analytics |
PreHeader | String | N | This is a preheader | String that will be added to the email message head as preheader. | |
ContentOverride/MessageId | Int | N | 25 | MessageId is the newsletterID to be used for the outgoing campaigns; it will be taken into consideration only for ActionType "send" | Suitable when you send the same message repeatedly and don't need to create each time a fresh new one. |
ContentOverride/CloneMessage | Bool (string) | N | < true | false > | Create a copy of the newsletter described in MessageID Fields. The copy will be sent. | Suitable when you send the same message repeatedly but wan't see separated statistics in the MailUp Web Application.. |
SendType | String | N | transactional | Define the kind of mailing that will be used (if transactional or massive). | If node isn't defined, default mailing is Massive. |
Transactional/UserName | String | Y if SendType is transactional | | SMTP+ User by means of Mailing will be executed | This node will be used only if SendType is transactional, otherwise will be ignored. |
Transactional/Password | String | Y if SendType is transactional | | Password of SMTP+ User by means of Mailing will be executed | This node will be used only if SendType is transactional, otherwise will be ignored. |
Transactional/AggregationCode | String | N | | A free code that will be used to aggregate statistics of executed Mailing. | This node will be used only if SendType is transactional, otherwise will be ignored. If not defined, statistics will be separated by file.
|
Transactional/KeepDuplicates | Bool (string) | N | | If false, if recipients.csv contains the same email address more time, only the first will be use. So the email message will be sent only once to an email address. If true, if recipients.csv contains the same email address more time, every entries will be used. So the email message could be sent more time to an email address. | This node will be used only if SendType is transactional, otherwise will be ignored.
Default false. |
Time Zones
Click here to see supported time zones
Id ( the value to type in to settings.xml ) | Standard Name | UTC Offset |
1 | Dateline Standard Time | (UTC-12:00) International Date Line West |
2 | UTC-11 | (UTC-11:00) Coordinated Universal Time-11 |
3 | Hawaiian Standard Time | (UTC-10:00) Hawaii |
4 | Alaskan Standard Time | (UTC-09:00) Alaska |
5 | Pacific Standard Time (Mexico) | (UTC-08:00) Baja California |
6 | Pacific Standard Time | (UTC-08:00) Pacific Time (US & Canada) |
7 | US Mountain Standard Time | (UTC-07:00) Arizona |
8 | Mountain Standard Time (Mexico) | (UTC-07:00) Chihuahua, La Paz, Mazatlan |
9 | Mountain Standard Time | (UTC-07:00) Mountain Time (US & Canada) |
10 | Central America Standard Time | (UTC-06:00) Central America |
11 | Central Standard Time | (UTC-06:00) Central Time (US & Canada) |
12 | Central Standard Time (Mexico) | (UTC-06:00) Guadalajara, Mexico City, Monterrey |
13 | Canada Central Standard Time | (UTC-06:00) Saskatchewan |
14 | SA Pacific Standard Time | (UTC-05:00) Bogota, Lima, Quito, Rio Branco |
15 | Eastern Standard Time | (UTC-05:00) Eastern Time (US & Canada) |
16 | US Eastern Standard Time | (UTC-05:00) Indiana (East) |
17 | Venezuela Standard Time | (UTC-04:30) Caracas |
18 | Paraguay Standard Time | (UTC-04:00) Asuncion |
19 | Atlantic Standard Time | (UTC-04:00) Atlantic Time (Canada) |
20 | Central Brazilian Standard Time | (UTC-04:00) Cuiaba |
21 | SA Western Standard Time | (UTC-04:00) Georgetown, La Paz, Manaus, San Juan |
22 | Pacific SA Standard Time | (UTC-04:00) Santiago |
23 | Newfoundland Standard Time | (UTC-03:30) Newfoundland |
24 | E. South America Standard Time | (UTC-03:00) Brasilia |
25 | Argentina Standard Time | (UTC-03:00) Buenos Aires |
26 | SA Eastern Standard Time | (UTC-03:00) Cayenne, Fortaleza |
27 | Greenland Standard Time | (UTC-03:00) Greenland |
28 | Montevideo Standard Time | (UTC-03:00) Montevideo |
29 | Bahia Standard Time | (UTC-03:00) Salvador |
30 | UTC-02 | (UTC-02:00) Coordinated Universal Time-02 |
31 | Mid-Atlantic Standard Time | (UTC-02:00) Mid-Atlantic - Old |
32 | Azores Standard Time | (UTC-01:00) Azores |
33 | Cape Verde Standard Time | (UTC-01:00) Cape Verde Is. |
34 | Morocco Standard Time | (UTC) Casablanca |
35 | UTC | UTC |
36 | GMT Standard Time | (UTC) Dublin, Edinburgh, Lisbon, London |
37 | Greenwich Standard Time | (UTC) Monrovia, Reykjavik |
38 | W. Europe Standard Time | (UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna |
39 | Central Europe Standard Time | (UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague |
40 | Romance Standard Time | (UTC+01:00) Brussels, Copenhagen, Madrid, Paris |
41 | Central European Standard Time | (UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb |
42 | W. Central Africa Standard Time | (UTC+01:00) West Central Africa |
43 | Namibia Standard Time | (UTC+01:00) Windhoek |
44 | Jordan Standard Time | (UTC+02:00) Amman |
45 | GTB Standard Time | (UTC+02:00) Athens, Bucharest |
46 | Middle East Standard Time | (UTC+02:00) Beirut |
47 | Egypt Standard Time | (UTC+02:00) Cairo |
48 | Syria Standard Time | (UTC+02:00) Damascus |
49 | E. Europe Standard Time | (UTC+02:00) E. Europe |
50 | South Africa Standard Time | (UTC+02:00) Harare, Pretoria |
51 | FLE Standard Time | (UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius |
52 | Turkey Standard Time | (UTC+02:00) Istanbul |
53 | Jerusalem Standard Time | (UTC+02:00) Jerusalem |
54 | Libya Standard Time | (UTC+02:00) Tripoli |
55 | Arabic Standard Time | (UTC+03:00) Baghdad |
56 | Kaliningrad Standard Time | (UTC+03:00) Kaliningrad, Minsk |
57 | Arab Standard Time | (UTC+03:00) Kuwait, Riyadh |
58 | E. Africa Standard Time | (UTC+03:00) Nairobi |
59 | Iran Standard Time | (UTC+03:30) Tehran |
60 | Arabian Standard Time | (UTC+04:00) Abu Dhabi, Muscat |
61 | Azerbaijan Standard Time | (UTC+04:00) Baku |
62 | Russian Standard Time | (UTC+04:00) Moscow, St. Petersburg, Volgograd |
63 | Mauritius Standard Time | (UTC+04:00) Port Louis |
64 | Georgian Standard Time | (UTC+04:00) Tbilisi |
65 | Caucasus Standard Time | (UTC+04:00) Yerevan |
66 | Afghanistan Standard Time | (UTC+04:30) Kabul |
67 | West Asia Standard Time | (UTC+05:00) Ashgabat, Tashkent |
68 | Pakistan Standard Time | (UTC+05:00) Islamabad, Karachi |
69 | India Standard Time | (UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi |
70 | Sri Lanka Standard Time | (UTC+05:30) Sri Jayawardenepura |
71 | Nepal Standard Time | (UTC+05:45) Kathmandu |
72 | Central Asia Standard Time | (UTC+06:00) Astana |
73 | Bangladesh Standard Time | (UTC+06:00) Dhaka |
74 | Ekaterinburg Standard Time | (UTC+06:00) Ekaterinburg |
75 | Myanmar Standard Time | (UTC+06:30) Yangon (Rangoon) |
76 | SE Asia Standard Time | (UTC+07:00) Bangkok, Hanoi, Jakarta |
77 | N. Central Asia Standard Time | (UTC+07:00) Novosibirsk |
78 | China Standard Time | (UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi |
79 | North Asia Standard Time | (UTC+08:00) Krasnoyarsk |
80 | Malay Peninsula Standard Time | (UTC+08:00) Kuala Lumpur, Singapore |
81 | W. Australia Standard Time | (UTC+08:00) Perth |
82 | Taipei Standard Time | (UTC+08:00) Taipei |
83 | Ulaanbaatar Standard Time | (UTC+08:00) Ulaanbaatar |
84 | North Asia East Standard Time | (UTC+09:00) Irkutsk |
85 | Tokyo Standard Time | (UTC+09:00) Osaka, Sapporo, Tokyo |
86 | Korea Standard Time | (UTC+09:00) Seoul |
87 | Cen. Australia Standard Time | (UTC+09:30) Adelaide |
88 | AUS Central Standard Time | (UTC+09:30) Darwin |
89 | E. Australia Standard Time | (UTC+10:00) Brisbane |
90 | AUS Eastern Standard Time | (UTC+10:00) Canberra, Melbourne, Sydney |
91 | West Pacific Standard Time | (UTC+10:00) Guam, Port Moresby |
92 | Tasmania Standard Time | (UTC+10:00) Hobart |
93 | Yakutsk Standard Time | (UTC+10:00) Yakutsk |
94 | Central Pacific Standard Time | (UTC+11:00) Solomon Is., New Caledonia |
95 | Vladivostok Standard Time | (UTC+11:00) Vladivostok |
96 | New Zealand Standard Time | (UTC+12:00) Auckland, Wellington |
97 | UTC+12 | (UTC+12:00) Coordinated Universal Time+12 |
98 | Fiji Standard Time | (UTC+12:00) Fiji |
99 | Magadan Standard Time | (UTC+12:00) Magadan |
100 | Kamchatka Standard Time | (UTC+12:00) Petropavlovsk-Kamchatsky - Old |
101 | Tonga Standard Time | (UTC+13:00) Nuku'alofa |
102 | Samoa Standard Time | (UTC+13:00) Samoa |
103 | Line Islands Standard Time | (UTC+14:00) Kiritimati Island |
Use Cases
Working example of settings.xml for the most common use cases.
Send an already defined email message (massive)
<?xml version="1.0" encoding="UTF-8"?>
<FtpZip>
<Header>
<ActionType>send</ActionType>
<CampaignCode>Campaign0009</CampaignCode>
<FormatVersion>0.1</FormatVersion>
<NotifyEmail>peter@example.com</NotifyEmail>
</Header>
<Content>
<ListId>1</ListId>
<ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID>
<SenderName>John Doe</SenderName>
<SenderEmail>john@doe.com</SenderEmail>
<EmailSubject>Campaign0009</EmailSubject>
</Content>
<AdvancedSettings>
<Separator>;</Separator>
<ContentOverride>
<MessageId>1136</MessageId>
</ContentOverride>
</AdvancedSettings>
</FtpZip>
Send an already defined email message (transactional)
<?xml version="1.0" encoding="UTF-8"?>
<FtpZip>
<Header>
<ActionType>send</ActionType>
<CampaignCode>Campaign0009</CampaignCode>
<FormatVersion>0.1</FormatVersion>
<NotifyEmail>peter@example.com</NotifyEmail>
</Header>
<Content>
<ListId>1</ListId>
<ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID>
<SenderName>John Doe</SenderName>
<SenderEmail>john@doe.com</SenderEmail>
<EmailSubject>Campaign0009</EmailSubject>
</Content>
<AdvancedSettings>
<Separator>;</Separator>
<ContentOverride>
<MessageId>1136</MessageId>
</ContentOverride>
<SendType>transactional</SendType>
<Transactional>
<Username>sxxxxxxx</Username>
<Password>xxxxxxxx</Password>
</Transactional>
</AdvancedSettings>
</FtpZip>
Send a copy of an already defined email message (massive)
<?xml version="1.0" encoding="UTF-8"?>
<FtpZip>
<Header>
<ActionType>send</ActionType>
<CampaignCode>Campaign0009</CampaignCode>
<FormatVersion>0.1</FormatVersion>
<NotifyEmail>peter@example.com</NotifyEmail>
</Header>
<Content>
<ListId>1</ListId>
<ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID>
<SenderName>John Doe</SenderName>
<SenderEmail>john@doe.com</SenderEmail>
<EmailSubject>Campaign0009</EmailSubject>
</Content>
<AdvancedSettings>
<Separator>;</Separator>
<ContentOverride>
<MessageId>1136</MessageId>
<CloneMessage>true</CloneMessage>
</ContentOverride>
</AdvancedSettings>
</FtpZip>
Send a copy of an already defined email message (transactional)
<?xml version="1.0" encoding="UTF-8"?>
<FtpZip>
<Header>
<ActionType>send</ActionType>
<CampaignCode>Campaign0009</CampaignCode>
<FormatVersion>0.1</FormatVersion>
<NotifyEmail>peter@example.com</NotifyEmail>
</Header>
<Content>
<ListId>1</ListId>
<ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID>
<SenderName>John Doe</SenderName>
<SenderEmail>john@doe.com</SenderEmail>
</Content>
<AdvancedSettings>
<Separator>;</Separator>
<ContentOverride>
<MessageId>1136</MessageId>
<CloneMessage>true</CloneMessage>
</ContentOverride>
<Transactional>
<Username>sxxxxxxx</Username>
<Password>xxxxxxxx</Password>
<AggregationCode>Campaign John Doe</AggregationCode>
</Transactional>
</AdvancedSettings>
</FtpZip>
Create and send an email message (massive)
<?xml version="1.0" encoding="UTF-8"?>
<FtpZip>
<Header>
<ActionType>full</ActionType>
<CampaignCode>Campaign0009</CampaignCode>
<FormatVersion>0.1</FormatVersion>
<NotifyEmail>peter@example.com</NotifyEmail>
</Header>
<Content>
<ListId>1</ListId>
<ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID>
<SenderName>John Doe</SenderName>
<SenderEmail>john@doe.com</SenderEmail>
<EmailSubject>Campaign0009</EmailSubject>
<ScheduleDateTime>2014-11-04T11:20:00.000</ScheduleDateTime>
<ScheduleTimeZone>6</ScheduleTimeZone>
<Notes>Notes for campaign 00009</Notes>
</Content>
<AdvancedSettings>
<Separator>;</Separator>
<Attachments>false</Attachments>
<DynamicFields>true</DynamicFields>
<EmbeddedImages>false</EmbeddedImages>
<LinkTracking>true</LinkTracking>
<HttpLinkTracking>true</HttpLinkTracking>
<HttpsLinkTracking>true</HttpsLinkTracking>
<MailToTracking>false</MailToTracking>
<FtpTracking>true</FtpTracking>
<NewsTracking>true</NewsTracking>
<QueryStringAdditionalParams></QueryStringAdditionalParams>
</AdvancedSettings>
</FtpZip>
Create and send an email message (transactional)
<?xml version="1.0" encoding="UTF-8"?>
<FtpZip>
<Header>
<ActionType>full</ActionType>
<CampaignCode>Campaign0009</CampaignCode>
<FormatVersion>0.1</FormatVersion>
<NotifyEmail>peter@example.com</NotifyEmail>
</Header>
<Content>
<ListId>1</ListId>
<ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID>
<SenderName>John Doe</SenderName>
<SenderEmail>john@doe.com</SenderEmail>
<EmailSubject>Campaign0009</EmailSubject>
<Notes>Notes for campaign 00009</Notes>
</Content>
<AdvancedSettings>
<Separator>;</Separator>
<Attachments>false</Attachments>
<DynamicFields>true</DynamicFields>
<EmbeddedImages>false</EmbeddedImages>
<LinkTracking>true</LinkTracking>
<HttpLinkTracking>true</HttpLinkTracking>
<HttpsLinkTracking>true</HttpsLinkTracking>
<MailToTracking>false</MailToTracking>
<FtpTracking>true</FtpTracking>
<NewsTracking>true</NewsTracking>
<QueryStringAdditionalParams></QueryStringAdditionalParams>
<SendType>transactional</SendType>
<Transactional>
<Username>sxxxxxxx</Username>
<Password>xxxxxxxx</Password>
<KeepDuplicates>false</KeepDuplicates>
</Transactional>
</AdvancedSettings>
</FtpZip>
Create an email message
<?xml version="1.0" encoding="UTF-8"?>
<FtpZip>
<Header>
<ActionType>save</ActionType>
<CampaignCode>Campaign0009</CampaignCode>
<FormatVersion>0.1</FormatVersion>
<NotifyEmail>peter@example.com</NotifyEmail>
</Header>
<Content>
<ListId>1</ListId>
<ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID>
<EmailSubject>Campaign0009</EmailSubject>
<Notes>Notes for campaign 00009</Notes>
</Content>
<AdvancedSettings>
<Separator>;</Separator>
<Attachments>false</Attachments>
<DynamicFields>true</DynamicFields>
<EmbeddedImages>false</EmbeddedImages>
<LinkTracking>true</LinkTracking>
<HttpLinkTracking>true</HttpLinkTracking>
<HttpsLinkTracking>true</HttpsLinkTracking>
<MailToTracking>false</MailToTracking>
<FtpTracking>true</FtpTracking>
<NewsTracking>true</NewsTracking>
<QueryStringAdditionalParams></QueryStringAdditionalParams>
</AdvancedSettings>
</FtpZip>
Markup.htm
Markup.xml is the file that FTPZIP will use to generate the email message that will be sent. Note that FTPZIP will run no validation on the actual HTML markup. Making sure that the message was correctly coded and will render as expected in different email clients is up to the author.
The following is a working example of a Markup.htm file content, with HTML code that uses two dynamic fields to include the recipient's name and last name (dynamic fields are replaced with the corresponding values at the time the message is sent by MailUp).
Note that in this example the code contains a remotely hosted image, so no image would be included in the ZIP file.
<html>
<body>
<br />
<img src="https://upload.wikimedia.org/wikipedia/it/b/bc/Wiki.png" /><br /><br />
<p style="font-family:arial;">Hello, I'm [firstname] [lastname]</p>
</body>
</html>
Although this sample message only contains a remotely hosted image, FTPZIP supports "locally defined" images. To take advantage of this feature, include the images inside the zip and let FTPZIP to replace the image path accordingly. In this case markup would look like the following:
<html>
<body>
<br />
<img src="Wiki.png" /><br /><br />
<p style="font-family:arial;">Hello, I'm [firstname] [lastname]</p>
</body>
</html>
Using images in the ZIP file does not require any property or settings enabled. Whatever image you enclose into the zip, FTPZIP will copy it and will attempt to reference it in the HTML markup.
- Path replacement is based on file name. So if you enclose Wiki.png, markup MUST display <img src="Wiki.png" />
- The allowed image formats are : JPG, GIF, PNG.
CORRECT
INCORRECT
<img src="http://myurl.com/Wiki.png" />
Recipients.csv
Recipients.csv is the file that will contain the recipients for the campaign when ActionType == full or send
- This file must comply with the formatting policies mentioned at the page http://help.mailup.com/display/mailupapi/CSV+File+Format
- You can add up as many dynamic fields as your account allows.
- You can use any kind of separator, but you must define it in the proper Settings.xml property (“Separator”).
- Make sure Recipients.csv was saved with UTF-8 encoding to avoid loss of special characters in some recipient names or content
Path FTPZIP listens to
Upload the ZIP file in the FTP subfolder “/import_zip” that can be accessed from your FTP root path :
Zip Samples
Use Cases
Create an email message
As it can be seen, this ZIP archive contains the mandatory files Settings.xml and Markup.htm, one image and the attachment folder. Recipients.csv is not necessary under this scenario as no recipients’ import job will actually take place.
Complete sample Archive for this case can be downloaded HERE
Create and send an email message
ZIP file this time contains Recipients.csv as well, as the full process will require a recipients’ list to import and to eventually send the newsletter to.
Complete sample Archive for this case can be downloaded HERE
Send an already defined email message
The Zip file contains Recipients.csv to be imported and Settings.xml displaying ongoing campaign settings.
This case covers the scenario where there's no need to create new message and it will be used th value set in <MessageId> within Setting.xml
Notification alert messages
FTPZIP may run several minutes after the time the ZIP file was uploaded. The system will provide updates on the status of the various processes. Each process will throw at least one notification alert message, normally sent to the admin account at the very end of the process either if it completes successfully or not.
Error Messages
Click here to see error notifications
Error message | Meaning | Resolution |
List 1, defined in XML file, does not exist | In Settings.xml it was defined a listId not matching any actual id. It may not exist. | Make sure you’ve set the correct value in your Settings.xml file, key <ListId>. If you need to know what are your list id’s please visit the page http://help.mailup.com/display/mailupapi/Codes+Table+and+List+GUID |
Missing Node in Xml File. | One of the keys in Settings.xml is missing. | Check your Settings.xml against the sample we provide in this page and make sure no Xml Key is missing. |
XML file does not match its schema. Validation failed | Xml contained in Settings.xml did not pass the validation check. | Check your Settings.xml against the sample we provide in this page and make sure no Xml Key ( or bracket ) is missing. |
Cannot read that as a ZipFile | FTP ZIP couldn’t read at all the submitted ZIP file. | Please make sure you have completely uploaded the ZIP FILE or check it was not corrupted. |
There was an exception running the extensions specified in the config file. ---> Maximum request length exceeded. | The attachments’ size goes beyond the upload limit. | Please revise the attachment you’re planning to send along with the newsletter. Global size of all attachments must be under 3Mb of size. |
There was no "Attachments" folder in the submitted Zip Archive. | Attachment was set to true in Settings.xml, but there was no attachment folder inside the submitted ZIP file. | Please edit your ZIP and make sure there’s the attachment folder in it. ( folder name is not case sensitive and can be written as Attachments, attachments or even AtTacHmentS. |
Given Campaign Code ( xyz ) has already been used. Please submit the campaign once again and make sure you've set an unused 'CampaignCode' in your Settings.xml file. | CampaignCode value in Settings.xml has already been used in one previous campaign. | Please revise your Settings.xml file and make sure you’ve set an unused Campaign code. |
An error was thrown and the FTP ZIP process could not complete. Please take contact with Mailup Support | This is a generic Exception message. It usually relates to internal server issues and they’re thrown regardless of the user defined settings inside Settings.xml | Please take contact with Mailup support, or retry to submit the same campaign ( with a renewed Campaign Code though ). |
Element 'ScheduleTimeZone' is not valid. Value 'no' is not valid for the data type 'http://www.w3.org/2001/XMLSchema:integer' - String "no" is not a valid integer value. | This error is thrown when an XML field is set with unvalid data type, such as a numeric in place of a boolean or a string instead of an integer. Data types are listed in the Settings.xml section. This same error message is sent when a mandatory value is left blank. | Please revise your Settings.xml and check for invalid data types. |
MessageId has to be filled with a numeric value when actiontype is set to SEND | This error will be thrown if ActionType is set to "send" and no MessageId was specified. It is also thrown when the messageId is set as a non numeric value. | Please revise your Settings.xml and check you've properly filled in the <MessageId> key. |
Success Messages
Click here to see success messages
Error message | Meaning | Resolution |
CONTENT SUCCESSFULLY DELIVERED TO SERVER | FTP ZIP delivered correctly the full ZIP package, including attachments. | --- |
NEWSLETTER SUCCESSFULLY DELIVERED TO SERVER | FTP ZIP delivered and created successfully the newsletter | --- |
Others
FTP ZIP throws and handles several offline processes.
It means it can’t be waiting for all of them to complete and even if it all seemed to run fine, some error may occur in further steps of the process FTP has no visibility on.
Therefore, it may happen that you are given the success message “CONTENT SUCCESSFULLY DELIVERED TO SERVER”, because FTP actually did its job correctly, and at a later stage receiving a secondary notification such as :
Usually, this kind of error is thrown for formatting problem in the Recipients csv file. Else, wrong field mapping or naming, or when it is attempted to schedule two campaigns at the same time (or nearly the same).
Please take a minute to read more at the URL : http://help.mailup.com/display/mailupapi/SendMessageNL+alerts
Multiple campaigns at once
FtpZip will look for any ZIP archive file in the defined FTP folder.
This means you can upload two or more campaigns at once.
If the first campaign processed should fail, FTPZIP will exit with errors and will step back into the process one hour later to complete the unprocessed sessions.
Execution of campaign that require Massive Mailing can fail do to work process limit of MailUp Import and Massive Mailing management.
We recommend for these reasons to upload multiple campaigns only once you are familiar with this tool and its settings and, in case there is the necessity to send more ZIP archive at the same time, evaluate to use the transactional Mailing.
We recomend to use Massive mailing when it is necessary to send one email message at a time to a big amount of subscribers.
Also, better not to play with multiple campaigns when you’re too close to deadlines or when they have to start too close each other in time.
Faqs
Click here to read FAQS
How do I know if a message was successfully created?
Every process, regardless of the result, will trigger an alert notification message to the admin account.
This message, beside describing the actual result, usually returns the Message Id (for both ActionTypes==”full” or ActionType==”newsletter”) and the Send Id only for ActionType == “full”). No Message or Send Id is returned in case of errors.
There’s plenty of online xml validators over the web: please try to validate your Settings.xml against one of the following :
For the advanced XSD validation you’ll need the XML schema definition linked below :
Settings.xsd
What is the attachment size limit?
Although there’s no limitation with regard to the amount of files you can attach to a certain campaign, you must ensure that the aggregate size is below 3MB. Otherwise the file won’t be processed and you’ll be returned an Invalid Attachment Notification message.
How many images can I include in the ZIP file?
There is no limitation.
I submitted my campaign but I'm receiving no result or notification, why?
Please make sure the email address you are monitoring is registered as your MailUp admin account.
How do I know if my file was already processed?
FTPZIP engine usually runs in less then a minute and unless it stumbles into an internal system exception, it will move your ZIP to an internal location for later processing. One suggestion would be to connect to your MailUp FTP host and check if the submitted ZIP file is still on the FTP folder where you left it last time. If it’s there, it means FTP did not yet process it. Eventually, you will receive a notification message after a ZIP file has been processed (NotifyEmail tag has to be specified in Settings.xml).
Can I upload multiple ZIP files to my FTP location?
Yes, FTPZIP was programmed to handle multiple files at once. They will be processed in sequence until there’s no file left in the FTP location FTPZIP currently checks.