4 * Copyright(c) 2012 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com>
8 * Licensed under the Apache License, Version 2.0(the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
35 #include "email-api-account.h"
36 #include "email-api-network.h"
37 #include "email-api-mail.h"
38 #include "email-api-mailbox.h"
39 #include "email-api-etc.h"
40 #include "email-api-smime.h"
43 #include "testapp-utility.h"
44 #include "testapp-mail.h"
45 #include "email-core-utils.h"
46 #include "email-core-mime.h"
48 #define MAIL_TEMP_BODY "/tmp/utf8"
49 #define HTML_TEMP_BODY "/tmp/utf8.htm"
52 static void testapp_test_print_sorting_menu()
54 testapp_print(" EMAIL_SORT_DATETIME_HIGH = 0\n");
55 testapp_print(" EMAIL_SORT_DATETIME_LOW = 1\n");
56 testapp_print(" EMAIL_SORT_SENDER_HIGH = 2\n");
57 testapp_print(" EMAIL_SORT_SENDER_LOW = 3\n");
58 testapp_print(" EMAIL_SORT_RCPT_HIGH = 4\n");
59 testapp_print(" EMAIL_SORT_RCPT_LOW = 5\n");
60 testapp_print(" EMAIL_SORT_SUBJECT_HIGH = 6\n");
61 testapp_print(" EMAIL_SORT_SUBJECT_LOW = 7\n");
62 testapp_print(" EMAIL_SORT_PRIORITY_HIGH = 8\n");
63 testapp_print(" EMAIL_SORT_PRIORITY_LOW = 9\n");
64 testapp_print(" EMAIL_SORT_ATTACHMENT_HIGH = 10\n");
65 testapp_print(" EMAIL_SORT_ATTACHMENT_LOW = 11\n");
66 testapp_print(" EMAIL_SORT_FAVORITE_HIGH = 12\n");
67 testapp_print(" EMAIL_SORT_FAVORITE_LOW = 13\n");
70 static void testapp_test_print_mail_list_item(email_mail_list_item_t *mail_list_item, int count)
74 testapp_print("\n>>>>> Print mail list items: count[%d]\n", count);
75 for (i=0; i< count; i++) {
76 testapp_print("\n[%d]\n", i);
77 testapp_print(" >>> Mailbox Name [ %s ] \n", mail_list_item[i].mailbox_name);
78 testapp_print(" >>> Mail ID [ %d ] \n", mail_list_item[i].mail_id);
79 testapp_print(" >>> Account ID [ %d ] \n", mail_list_item[i].account_id);
80 if (mail_list_item[i].from!= NULL) {
81 testapp_print(" >>> From [ %s ] \n", mail_list_item[i].from);
83 if (mail_list_item[i].from_email_address != NULL) {
84 testapp_print(" >>> from_email_address [ %s ] \n", mail_list_item[i].from_email_address);
86 if (mail_list_item[i].recipients!= NULL) {
87 testapp_print(" >>> recipients [ %s ] \n", mail_list_item[i].recipients);
89 if (mail_list_item[i].subject != NULL) {
90 testapp_print(" >>> subject [ %s ] \n", mail_list_item[i].subject);
92 testapp_print(" >>> text_download_yn [ %d ] \n", mail_list_item[i].body_download_status);
93 testapp_print(" >>> date_time [ %d ] \n", mail_list_item[i].date_time);
94 testapp_print(" >>> flags_seen_field [ %d ] \n", mail_list_item[i].flags_seen_field);
95 testapp_print(" >>> priority [ %d ] \n", mail_list_item[i].priority);
96 testapp_print(" >>> save_status [ %d ] \n", mail_list_item[i].save_status);
97 testapp_print(" >>> lock [ %d ] \n", mail_list_item[i].lock_status);
98 testapp_print(" >>> report_status [ %d ] \n", mail_list_item[i].report_status);
99 testapp_print(" >>> recipients_count [ %d ] \n", mail_list_item[i].recipients_count);
100 testapp_print(" >>> attachment_count [ %d ] \n", mail_list_item[i].attachment_count);
101 testapp_print(" >>> DRM_status [ %d ] \n", mail_list_item[i].DRM_status);
103 if (mail_list_item[i].preview_text != NULL) {
104 testapp_print(" >>> preview_text [ %s ] \n", mail_list_item[i].preview_text);
107 testapp_print(" >>> thread_id [ %d ] \n", mail_list_item[i].thread_id);
108 testapp_print(" >>> thread_item_count [ %d ] \n", mail_list_item[i].thread_item_count);
113 static gboolean testapp_add_mail_for_sending(int *result_mail_id)
117 int err = EMAIL_ERROR_NONE;
119 char recipient_address[300] = { 0 , };
120 char from_address[300] = { 0 , };
121 char passpharse[300] = {0, };
122 const char *body_file_path = MAIL_TEMP_BODY;
124 email_account_t *account_data = NULL;
125 email_mailbox_t *mailbox_data = NULL;
126 email_mail_data_t *test_mail_data = NULL;
129 testapp_print("\n > Enter account id : ");
130 if (0 >= scanf("%d", &account_id))
131 testapp_print("Invalid input. ");
133 testapp_print("\n > Enter recipient address : ");
134 if (0 >= scanf("%s", recipient_address))
135 testapp_print("Invalid input. ");
137 email_get_account(account_id, GET_FULL_DATA_WITHOUT_PASSWORD, &account_data);
139 email_get_mailbox_by_mailbox_type(account_id, EMAIL_MAILBOX_TYPE_OUTBOX, &mailbox_data);
141 test_mail_data = malloc(sizeof(email_mail_data_t));
142 memset(test_mail_data, 0x00, sizeof(email_mail_data_t));
144 SNPRINTF(from_address, 300, "<%s>", account_data->user_email_address);
146 test_mail_data->account_id = account_id;
147 test_mail_data->save_status = EMAIL_MAIL_STATUS_SEND_DELAYED;
148 test_mail_data->body_download_status = 1;
149 test_mail_data->flags_seen_field = 1;
150 test_mail_data->file_path_plain = strdup(body_file_path);
151 test_mail_data->mailbox_id = mailbox_data->mailbox_id;
152 test_mail_data->mailbox_type = mailbox_data->mailbox_type;
153 test_mail_data->full_address_from = strdup(from_address);
154 test_mail_data->full_address_to = strdup(recipient_address);
155 test_mail_data->subject = strdup("Read receipt request from TIZEN");
156 test_mail_data->remaining_resend_times = 3;
157 test_mail_data->report_status = EMAIL_MAIL_REQUEST_DSN | EMAIL_MAIL_REQUEST_MDN;
159 body_file = fopen(body_file_path, "w");
161 testapp_print("\n body_file [%p]\n", body_file);
163 if (body_file == NULL) {
164 testapp_print("\n fopen [%s]failed\n", body_file_path);
168 for (i = 0; i < 100; i++)
169 fprintf(body_file, "Mail sending Test. [%d]\n", i);
174 testapp_print(" > Select smime? [0: Normal, 1: sign, 2: Encrpyt, 3: sing + encrypt, 4: pgp sign, 5: pgp encrypted, 6: pgp sign + encrypt] : ");
175 if (0 >= scanf("%d", &smime_type))
176 testapp_print("Invalid input. ");
177 test_mail_data->smime_type = smime_type;
179 if (smime_type >= EMAIL_PGP_SIGNED) {
180 testapp_print(" > passpharse : ");
181 if (0 >= scanf("%s", passpharse))
182 testapp_print("Invalid input. ");
183 test_mail_data->pgp_password = strdup(passpharse);
186 if ((err = email_add_mail(test_mail_data, NULL, 0, NULL, 0)) != EMAIL_ERROR_NONE)
187 testapp_print("email_add_mail failed. [%d]\n", err);
189 testapp_print("email_add_mail success.\n");
191 testapp_print("saved mail id = [%d]\n", test_mail_data->mail_id);
194 *result_mail_id = test_mail_data->mail_id;
196 email_free_mail_data(&test_mail_data, 1);
197 email_free_mailbox(&mailbox_data, 1);
198 email_free_account(&account_data, 1);
203 static gboolean testapp_test_add_mail(int *result_mail_id)
209 int attachment_count = 0;
210 int err = EMAIL_ERROR_NONE;
212 char arg[50] = { 0 , };
213 const char *body_file_path = MAIL_TEMP_BODY;
214 email_mailbox_t *mailbox_data = NULL;
215 email_mail_data_t *test_mail_data = NULL;
216 email_attachment_data_t *attachment_data = NULL;
217 email_meeting_request_t *meeting_req = NULL;
220 testapp_print("\n > Enter account id : ");
221 if (0 >= scanf("%d", &account_id))
222 testapp_print("Invalid input. ");
224 memset(arg, 0x00, 50);
225 testapp_print("\n > Enter mailbox id : ");
226 if (0 >= scanf("%d", &mailbox_id))
227 testapp_print("Invalid input. ");
229 email_get_mailbox_by_mailbox_id(mailbox_id, &mailbox_data);
231 test_mail_data = malloc(sizeof(email_mail_data_t));
232 memset(test_mail_data, 0x00, sizeof(email_mail_data_t));
234 testapp_print("\n From EAS? [0/1]> ");
235 if (0 >= scanf("%d", &from_eas))
236 testapp_print("Invalid input. ");
238 test_mail_data->account_id = account_id;
239 test_mail_data->save_status = 1;
240 test_mail_data->body_download_status = 1;
241 test_mail_data->flags_seen_field = 1;
242 test_mail_data->file_path_plain = strdup(body_file_path);
243 test_mail_data->mailbox_id = mailbox_id;
244 test_mail_data->mailbox_type = mailbox_data->mailbox_type;
245 test_mail_data->full_address_from = strdup("<test1@test.com>");
246 test_mail_data->full_address_to = strdup("<test2@test.com>");
247 test_mail_data->full_address_cc = strdup("<test3@test.com>");
248 test_mail_data->full_address_bcc = strdup("<test4@test.com>");
249 test_mail_data->subject = strdup("Meeting request mail");
250 test_mail_data->remaining_resend_times = 3;
251 test_mail_data->eas_data = strdup("EAS DATA TEST");
252 test_mail_data->eas_data_length = strlen(test_mail_data->eas_data) + 1;
254 body_file = fopen(body_file_path, "w");
256 testapp_print("\n body_file [%p]\n", body_file);
258 if (body_file == NULL) {
259 testapp_print("\n fopen [%s]failed\n", body_file_path);
260 email_free_mail_data(&test_mail_data, 1);
261 email_free_mailbox(&mailbox_data, 1);
265 for (i = 0; i < 500; i++)
266 fprintf(body_file, "X2 X2 X2 X2 X2 X2 X2");
268 fprintf(body_file, "Hello world");
272 testapp_print(" > Select smime? [0: Normal, 1: sign, 2: Encrypt, 3: sing + encrypt] : ");
273 if (0 >= scanf("%d", &smime_type))
274 testapp_print("Invalid input. ");
275 test_mail_data->smime_type = smime_type;
277 testapp_print(" > How many file attachment? [>=0] : ");
278 if (0 >= scanf("%d", &attachment_count))
279 testapp_print("Invalid input. ");
281 test_mail_data->attachment_count = attachment_count;
282 if (attachment_count > 0)
283 attachment_data = calloc(attachment_count, sizeof(email_attachment_data_t));
286 for (i = 0; i < attachment_count ; i++) {
287 memset(arg, 0x00, 50);
288 testapp_print("\n > Enter attachment name : ");
289 if (0 >= scanf("%s", arg))
290 testapp_print("Invalid input. ");
292 attachment_data[i].attachment_name = strdup(arg);
294 memset(arg, 0x00, 50);
295 testapp_print("\n > Enter attachment absolute path : ");
296 if (0 >= scanf("%s", arg))
297 testapp_print("Invalid input. ");
299 attachment_data[i].attachment_path = strdup(arg);
300 attachment_data[i].save_status = 1;
301 attachment_data[i].mailbox_id = test_mail_data->mailbox_id;
304 testapp_print("\n > Meeting Request? [0: no, 1: yes(request from server), 2: yes(response from local)]");
305 if (0 >= scanf("%d", (int *)&(test_mail_data->meeting_request_status)))
306 testapp_print("Invalid input. ");
308 if (test_mail_data->meeting_request_status == 1
309 || test_mail_data->meeting_request_status == 2) {
311 /* dummy data for meeting request */
312 meeting_req = malloc(sizeof(email_meeting_request_t));
313 memset(meeting_req, 0x00, sizeof(email_meeting_request_t));
315 meeting_req->meeting_response = 1;
316 current_time = time(NULL);
317 gmtime_r(¤t_time, &(meeting_req->start_time));
318 gmtime_r(¤t_time, &(meeting_req->end_time));
319 meeting_req->location = strdup("Seoul");
320 meeting_req->global_object_id = strdup("abcdef12345");
322 meeting_req->time_zone.offset_from_GMT = 9;
323 strcpy(meeting_req->time_zone.standard_name, "STANDARD_NAME");
324 gmtime_r(¤t_time, &(meeting_req->time_zone.standard_time_start_date));
325 meeting_req->time_zone.standard_bias = 3;
327 strcpy(meeting_req->time_zone.daylight_name, "DAYLIGHT_NAME");
328 gmtime_r(¤t_time, &(meeting_req->time_zone.daylight_time_start_date));
329 meeting_req->time_zone.daylight_bias = 7;
333 if ((err = email_add_mail(test_mail_data, attachment_data, attachment_count, meeting_req, from_eas)) != EMAIL_ERROR_NONE)
334 testapp_print("email_add_mail failed. [%d]\n", err);
336 testapp_print("email_add_mail success.\n");
338 testapp_print("saved mail id = [%d]\n", test_mail_data->mail_id);
339 testapp_print("saved mailbox id = [%d]\n", test_mail_data->mailbox_id);
342 *result_mail_id = test_mail_data->mail_id;
345 email_free_attachment_data(&attachment_data, attachment_count);
348 email_free_meeting_request(&meeting_req, 1);
350 email_free_mail_data(&test_mail_data, 1);
351 email_free_mailbox(&mailbox_data, 1);
356 static gboolean testapp_test_update_mail()
359 int err = EMAIL_ERROR_NONE;
360 int test_attachment_data_count = 0;
363 email_mail_data_t *test_mail_data = NULL;
364 email_attachment_data_t *test_attachment_data_list = NULL;
365 email_meeting_request_t *meeting_req = NULL;
367 testapp_print("\n > Enter mail id : ");
368 if (0 >= scanf("%d", &mail_id))
369 testapp_print("Invalid input. ");
371 email_get_mail_data(mail_id, &test_mail_data);
373 if (!test_mail_data) {
374 testapp_print("email_get_mail_data() failed\n");
378 testapp_print("\n > Enter Subject: ");
379 if (0 >= scanf("%s", arg))
380 testapp_print("Invalid input. ");
382 test_mail_data->subject = strdup(arg);
384 if (test_mail_data->attachment_count > 0) {
385 if ((err = email_get_attachment_data_list(mail_id, &test_attachment_data_list, &test_attachment_data_count)) != EMAIL_ERROR_NONE) {
386 testapp_print("email_get_attachment_data_list() failed [%d]\n", err);
391 if (test_mail_data->meeting_request_status == EMAIL_MAIL_TYPE_MEETING_REQUEST
392 || test_mail_data->meeting_request_status == EMAIL_MAIL_TYPE_MEETING_RESPONSE
393 || test_mail_data->meeting_request_status == EMAIL_MAIL_TYPE_MEETING_ORIGINATINGREQUEST) {
395 if ((err = email_get_meeting_request(mail_id, &meeting_req)) != EMAIL_ERROR_NONE) {
396 testapp_print("email_get_meeting_request() failed [%d]\n", err);
400 testapp_print("\n > Enter meeting response: ");
401 if (0 >= scanf("%d", (int *)&(meeting_req->meeting_response)))
402 testapp_print("Invalid input. ");
405 if ((err = email_update_mail(test_mail_data, test_attachment_data_list, test_attachment_data_count, meeting_req, 0)) != EMAIL_ERROR_NONE)
406 testapp_print("email_update_mail failed.[%d]\n", err);
408 testapp_print("email_update_mail success\n");
415 email_free_mail_data(&test_mail_data, 1);
417 if (test_attachment_data_list)
418 email_free_attachment_data(&test_attachment_data_list, test_attachment_data_count);
421 email_free_meeting_request(&meeting_req, 1);
429 static gboolean testapp_test_get_mails()
431 testapp_print("\n >>> testapp_test_get_mails : Entered \n");
432 email_mail_data_t *mails = NULL, **mails_pointer = NULL;
434 int count = 0, i = 0;
439 int err_code = EMAIL_ERROR_NONE;
440 int to_get_count = 0;
441 int is_for_thread_view = 0;
443 struct tm *temp_time_info;
445 testapp_print("\n > Enter Account_id(0 = all accounts) : ");
446 if (0 >= scanf("%d", &account_id))
447 testapp_print("Invalid input. ");
448 testapp_print("\n > Enter Mailbox id(0 = all mailboxes) :");
449 if (0 >= scanf("%d", &mailbox_id))
450 testapp_print("Invalid input. ");
452 testapp_print("\n > Enter Sorting : ");
453 if (0 >= scanf("%d", &sorting))
454 testapp_print("Invalid input. ");
456 testapp_print("\n > Enter Start index(starting at 0): ");
457 if (0 >= scanf("%d", &start_index))
458 testapp_print("Invalid input. ");
460 testapp_print("\n > Enter max_count : ");
461 if (0 >= scanf("%d", &limit_count))
462 testapp_print("Invalid input. ");
464 testapp_print("\n > For thread view : ");
465 if (0 >= scanf("%d", &is_for_thread_view))
466 testapp_print("Invalid input. ");
468 testapp_print("\n > Mail count only(0:list 1:count): ");
469 if (0 >= scanf("%d", &to_get_count))
470 testapp_print("Invalid input. ");
473 mails_pointer = NULL;
475 mails_pointer = &mails;
477 if (is_for_thread_view == -2)
478 list_type = EMAIL_LIST_TYPE_LOCAL;
479 else if (is_for_thread_view == -1)
480 list_type = EMAIL_LIST_TYPE_THREAD;
482 list_type = EMAIL_LIST_TYPE_NORMAL;
485 if (mailbox_id == 0) {
486 testapp_print("Calling email_get_mails for all mailbox.\n");
487 err_code = email_get_mails(account_id, 0, list_type, start_index, limit_count, sorting, mails_pointer, &count);
489 testapp_print("email_get_mails failed - err[%d]\n", err_code);
491 testapp_print("Calling email_get_mails for %d mailbox_id.\n", mailbox_id);
492 err_code = email_get_mails(account_id, mailbox_id, list_type, start_index, limit_count, sorting, mails_pointer, &count);
494 testapp_print("email_get_mails failed - err[%d]\n", err_code);
496 testapp_print("email_get_mails >>>>>>count - %d\n", count);
499 for (i = 0; i < count; i++) {
500 testapp_print("\n[%d]\n", i);
501 testapp_print(" >>> mailbox_id [ %d ] \n", mails[i].mailbox_id);
502 testapp_print(" >>> mail_id [ %d ] \n", mails[i].mail_id);
503 testapp_print(" >>> account_id [ %d ] \n", mails[i].account_id);
504 if (mails[i].full_address_from != NULL)
505 testapp_print(" >>> full_address_from [ %s ] \n", mails[i].full_address_from);
506 if (mails[i].full_address_to != NULL)
507 testapp_print(" >>> recipients [ %s ] \n", mails[i].full_address_to);
508 if (mails[i].subject != NULL)
509 testapp_print(" >>> subject [ %s ] \n", mails[i].subject);
510 testapp_print(" >>> body_download_status [ %d ] \n", mails[i].body_download_status);
511 temp_time_info = localtime(&mails[i].date_time);
512 testapp_print(" >>> date_time [ %d/%d/%d %d:%d:%d] \n",
513 temp_time_info->tm_year + 1900,
514 temp_time_info->tm_mon+1,
515 temp_time_info->tm_mday,
516 temp_time_info->tm_hour,
517 temp_time_info->tm_min,
518 temp_time_info->tm_sec);
519 testapp_print(" >>> flags_seen_field [ %d ] \n", mails[i].flags_seen_field);
520 testapp_print(" >>> priority [ %d ] \n", mails[i].priority);
521 testapp_print(" >>> save_status [ %d ] \n", mails[i].save_status);
522 testapp_print(" >>> lock_status [ %d ] \n", mails[i].lock_status);
523 testapp_print(" >>> attachment_count [ %d ] \n", mails[i].attachment_count);
524 if (mails[i].preview_text != NULL)
525 testapp_print(" >>> preview_text [ %s ] \n", mails[i].preview_text);
530 testapp_print(" >>> testapp_test_get_mails : End \n");
534 #define TEMP_ARGUMENT_SIZE 4096
536 static gboolean testapp_test_mail_send(int *result_mail_id)
538 int added_mail_id = 0;
539 int err = EMAIL_ERROR_NONE;
541 email_mail_data_t *result_mail_data = NULL;
543 testapp_add_mail_for_sending(&added_mail_id);
546 email_get_mail_data(added_mail_id, &result_mail_data);
548 testapp_print("Calling email_send_mail...\n");
550 if (email_send_mail(added_mail_id, &handle) < 0) {
551 testapp_print("Sending failed[%d]\n", err);
553 testapp_print("Start sending. handle[%d]\n", handle);
556 email_free_mail_data(&result_mail_data, 1);
560 *result_mail_id = added_mail_id;
565 static gboolean testapp_test_get_mail_list_ex()
567 email_list_filter_t *filter_list = NULL;
568 email_list_sorting_rule_t sorting_rule_list[2];
569 email_mail_list_item_t *result_mail_list = NULL;
570 int filter_rule_count = 0;
571 int sorting_rule_count = 2;
572 int result_mail_count = 0;
573 int err = EMAIL_ERROR_NONE;
577 filter_rule_count = 3;
579 filter_list = malloc(sizeof(email_list_filter_t) * filter_rule_count);
580 memset(filter_list, 0 , sizeof(email_list_filter_t) * filter_rule_count);
582 filter_list[0].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
583 filter_list[0].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_ACCOUNT_ID;
584 filter_list[0].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_EQUAL;
585 filter_list[0].list_filter_item.rule.key_value.integer_type_value = 1;
586 filter_list[0].list_filter_item.rule.case_sensitivity = false;
588 filter_list[1].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
589 filter_list[1].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
591 filter_list[2].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
592 filter_list[2].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_MAILBOX_TYPE;
593 filter_list[2].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_EQUAL;
594 filter_list[2].list_filter_item.rule.key_value.integer_type_value = EMAIL_MAILBOX_TYPE_INBOX;
595 filter_list[2].list_filter_item.rule.case_sensitivity = false;
597 /*filter_list[0].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE_ATTACH;
598 filter_list[0].list_filter_item.rule_attach.target_attribute = EMAIL_MAIL_ATTACH_ATTRIBUTE_ATTACHMENT_NAME;
599 filter_list[0].list_filter_item.rule_attach.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
600 filter_list[0].list_filter_item.rule_attach.key_value.string_type_value = strdup("test");
601 filter_list[0].list_filter_item.rule_attach.case_sensitivity = false;*/
604 filter_list[0].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
605 filter_list[0].list_filter_item.rule_fts.target_attribute = EMAIL_MAIL_ATTRIBUTE_ACCOUNT_ID;
606 filter_list[0].list_filter_item.rule_fts.rule_type = EMAIL_LIST_FILTER_RULE_EQUAL;
607 filter_list[0].list_filter_item.rule_fts.key_value.integer_type_value = 1;
609 filter_list[1].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
610 filter_list[1].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_OR;
613 filter_list[2].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
614 filter_list[2].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_SUBJECT;
615 filter_list[2].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
616 filter_list[2].list_filter_item.rule.key_value.string_type_value = strdup("2013");
617 filter_list[2].list_filter_item.rule.case_sensitivity = false;
620 filter_list[1].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
621 filter_list[1].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_OR;
623 filter_list[2].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
624 filter_list[2].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_TO;
625 filter_list[2].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
626 filter_list[2].list_filter_item.rule.key_value.string_type_value = strdup("RE");
627 filter_list[2].list_filter_item.rule.case_sensitivity = false;
629 filter_list[3].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
630 filter_list[3].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_OR;
632 filter_list[4].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
633 filter_list[4].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_CC;
634 filter_list[4].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
635 filter_list[4].list_filter_item.rule.key_value.string_type_value = strdup("RE");
636 filter_list[4].list_filter_item.rule.case_sensitivity = false;
638 filter_list[5].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
639 filter_list[5].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_OR;
641 filter_list[6].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
642 filter_list[6].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_BCC;
643 filter_list[6].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
644 filter_list[6].list_filter_item.rule.key_value.string_type_value = strdup("RE");
645 filter_list[6].list_filter_item.rule.case_sensitivity = false;
647 filter_list[7].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
648 filter_list[7].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_OR;
650 filter_list[8].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
651 filter_list[8].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_FROM;
652 filter_list[8].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
653 filter_list[8].list_filter_item.rule.key_value.string_type_value = strdup("RE");
654 filter_list[8].list_filter_item.rule.case_sensitivity = false;
658 filter_list[0].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
659 filter_list[0].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_ACCOUNT_ID;
660 filter_list[0].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_EQUAL;
661 filter_list[0].list_filter_item.rule.key_value.integer_type_value = 1;
663 filter_list[1].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
664 filter_list[1].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
666 filter_list[2].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
667 filter_list[2].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_MAILBOX_NAME;
668 filter_list[2].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_EQUAL;
669 filter_list[2].list_filter_item.rule.key_value.string_type_value = strdup("INBOX");
670 filter_list[2].list_filter_item.rule.case_sensitivity = true;
673 memset(sorting_rule_list, 0 , sizeof(email_list_sorting_rule_t) * sorting_rule_count);
675 sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_RECIPIENT_ADDRESS;
676 sorting_rule_list[0].key_value.string_type_value = strdup("minsoo.kimn@gmail.com");
677 sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_TO_CCBCC;
679 testapp_print("\n Enter the sort_order :");
680 if (0 >= scanf("%d", &sort_order))
681 testapp_print("Invalid input.");
683 sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_SUBJECT;
684 sorting_rule_list[0].sort_order = sort_order;
686 sorting_rule_list[1].target_attribute = EMAIL_MAIL_ATTRIBUTE_DATE_TIME;
687 sorting_rule_list[1].sort_order = EMAIL_SORT_ORDER_DESCEND;
689 err = email_get_mail_list_ex(filter_list, filter_rule_count, sorting_rule_list, sorting_rule_count, -1, -1, &result_mail_list, &result_mail_count);
691 if (err == EMAIL_ERROR_NONE) {
692 testapp_print("email_get_mail_list_ex succeed.\n");
694 for (i = 0; i < result_mail_count; i++) {
695 testapp_print("mail_id [%d], subject [%s], mailbox_type [%d] full_address_from [%s]\n", result_mail_list[i].mail_id, result_mail_list[i].subject, result_mail_list[i].mailbox_type, result_mail_list[i].full_address_from);
698 testapp_print("email_get_mail_list_ex failed.\n");
701 email_free_list_filter(&filter_list, 3);
706 static gboolean testapp_test_send_cancel()
712 int *mailIdList = NULL;
715 testapp_print("\n > Enter total Number of mail want to send: ");
716 if (0 >= scanf("%d", &num))
717 testapp_print("Invalid input. ");
718 mailIdList = (int *)malloc(sizeof(int)*num);
722 for (i = 1; i <= num; i++) {
723 testapp_test_mail_send(&mail_id);
725 testapp_print("mail_id[%d]", mail_id);
727 mailIdList[i] = mail_id;
728 testapp_print("mailIdList[%d][%d]", i, mailIdList[i]);
731 testapp_print("\n > Do you want to cancel the send mail job '1' or '0': ");
732 if (0 >= scanf("%d", &Y))
733 testapp_print("Invalid input. ");
735 testapp_print("\n >Enter mail-id[1-%d] ", i);
736 if (0 >= scanf("%d", &j))
737 testapp_print("Invalid input. ");
738 testapp_print("\n mailIdList[%d] ", mailIdList[j]);
739 if (email_cancel_sending_mail(mailIdList[j]) < 0)
740 testapp_print("email_cancel_sending_mail failed..!");
742 testapp_print("email_cancel_sending_mail success..!");
749 static gboolean testapp_test_delete()
751 int mail_id = 0, account_id = 0;
753 int err = EMAIL_ERROR_NONE;
756 testapp_print("\n > Enter Account_id: ");
757 if (0 >= scanf("%d", &account_id))
758 testapp_print("Invalid input. ");
760 testapp_print("\n > Enter Mail_id: ");
761 if (0 >= scanf("%d", &mail_id))
762 testapp_print("Invalid input. ");
764 testapp_print("\n > Enter Mailbox id: ");
765 if (0 >= scanf("%d", &mailbox_id))
766 testapp_print("Invalid input. ");
768 testapp_print("\n > Enter from_server: ");
769 if (0 >= scanf("%d", &from_server))
770 testapp_print("Invalid input. ");
773 if ((err = email_delete_mail(mailbox_id, &mail_id, 1, from_server)) < 0)
774 testapp_print("\n email_delete_mail failed[%d]\n", err);
776 testapp_print("\n email_delete_mail success\n");
781 static gboolean testapp_test_update_mail_attribute()
783 int err = EMAIL_ERROR_NONE;
786 int *mail_id_array = NULL;
787 int mail_id_count = 0;
788 email_mail_attribute_type attribute_type;
789 email_mail_attribute_value_t attribute_value;
791 testapp_print("\n > Enter account_id: ");
792 if (0 >= scanf("%d", &account_id))
793 testapp_print("Invalid input. ");
795 testapp_print("\n > Enter attribute_type: ");
796 if (0 >= scanf("%d", (int*)&attribute_type))
797 testapp_print("Invalid input. ");
799 testapp_print("\n > Enter integer type value: ");
800 if (0 >= scanf("%d", (int*)&(attribute_value.integer_type_value)))
801 testapp_print("Invalid input. ");
803 testapp_print("\n > Enter mail_id_count: ");
804 if (0 >= scanf("%d", &mail_id_count))
805 testapp_print("Invalid input. ");
807 mail_id_count = (mail_id_count < 5000) ? mail_id_count : 5000;
809 if (mail_id_count > 0) {
810 mail_id_array = malloc(sizeof(int) * mail_id_count);
813 for (i = 0; i < mail_id_count; i++) {
814 testapp_print("\n > Enter mail id: ");
815 if (0 >= scanf("%d", (mail_id_array + i)))
816 testapp_print("Invalid input. ");
820 if ((err = email_update_mail_attribute(account_id, mail_id_array, mail_id_count, attribute_type, attribute_value)) < EMAIL_ERROR_NONE)
821 testapp_print("\n email_update_mail_attribute failed[%d]\n", err);
823 testapp_print("\n email_update_mail_attribute success\n");
831 static gboolean testapp_test_move()
837 for (i = 0; i < 3; i++) {
838 testapp_print("\n > Enter mail_id: ");
839 if (0 >= scanf("%d", &mail_id[i]))
840 testapp_print("Invalid input. ");
843 testapp_print("\n > Enter mailbox_id: ");
844 if (0 >= scanf("%d", &mailbox_id))
845 testapp_print("Invalid input. ");
848 email_move_mail_to_mailbox(mail_id, 3, mailbox_id);
852 static gboolean testapp_test_delete_all()
855 int err = EMAIL_ERROR_NONE;
857 testapp_print("\n > Enter mailbox_id: ");
858 if (0 >= scanf("%d", &mailbox_id))
859 testapp_print("Invalid input. ");
861 /* delete all message */
862 if ((err = email_delete_all_mails_in_mailbox(mailbox_id, 0)) < 0)
863 testapp_print("email_delete_all_mails_in_mailbox failed [%d]\n", err);
865 testapp_print("email_delete_all_mails_in_mailbox Success\n");
871 static gboolean testapp_test_add_attachment()
875 email_attachment_data_t attachment;
877 testapp_print("\n > Enter Mail Id: ");
878 if (0 >= scanf("%d", &mail_id))
879 testapp_print("Invalid input. ");
881 memset(&attachment, 0x00, sizeof(email_attachment_data_t));
882 memset(arg, 0x00, 100);
883 testapp_print("\n > Enter attachment name: ");
884 if (0 >= scanf("%s", arg))
885 testapp_print("Invalid input. ");
887 attachment.attachment_name = strdup(arg);
889 memset(arg, 0x00, 100);
890 testapp_print("\n > Enter attachment absolute path: ");
891 if (0 >= scanf("%s", arg))
892 testapp_print("Invalid input. ");
894 attachment.save_status = true;
895 attachment.attachment_path = strdup(arg);
896 if (email_add_attachment(mail_id, &attachment) < 0)
897 testapp_print("email_add_attachment failed\n");
899 testapp_print("email_add_attachment success\n");
906 static gboolean testapp_test_set_deleted_flag()
910 int mail_ids[100] = { 0, };
911 int temp_mail_id = 0;
912 int err_code = EMAIL_ERROR_NONE;
914 testapp_print("\n >>> Input target account id: ");
915 if (0 >= scanf("%d", &account_id))
916 testapp_print("Invalid input. ");
919 testapp_print("\n >>> Input target mail id( Input 0 to terminate ) [MAX = 100]: ");
920 if (0 >= scanf("%d", &temp_mail_id))
921 testapp_print("Invalid input. ");
922 mail_ids[index++] = temp_mail_id;
923 } while (temp_mail_id != 0);
925 err_code = email_set_flags_field(account_id, mail_ids, index, EMAIL_FLAGS_DELETED_FIELD, 1, true);
926 testapp_print("email_set_flags_field returns - err[%d]\n", err_code);
931 static gboolean testapp_test_expunge_mails_deleted_flagged()
935 int err_code = EMAIL_ERROR_NONE;
938 testapp_print("\n >>> Input target mailbox id: ");
939 if (0 >= scanf("%d", &mailbox_id))
940 testapp_print("Invalid input. ");
942 testapp_print("\n >>> Expunge on server?: ");
943 if (0 >= scanf("%d", &on_server))
944 testapp_print("Invalid input. ");
946 err_code = email_expunge_mails_deleted_flagged(mailbox_id, on_server, &handle);
948 testapp_print("email_expunge_mails_deleted_flagged returns - err[%d]\n", err_code);
953 static gboolean testapp_test_send_read_receipt()
955 int read_mail_id = 0;
956 int receipt_mail_id = 0;
957 int err_code = EMAIL_ERROR_NONE;
960 testapp_print("\n >>> Input read mail id: ");
961 if (0 >= scanf("%d", &read_mail_id))
962 testapp_print("Invalid input. ");
964 err_code = email_add_read_receipt(read_mail_id, &receipt_mail_id);
966 testapp_print("eamil_add_read_receipt returns receipt_mail_id [%d] - err[%d]\n", receipt_mail_id, err_code);
967 testapp_print("Calling email_send_mail...\n");
969 if ((err_code = email_send_mail(receipt_mail_id, &handle)) != EMAIL_ERROR_NONE) {
970 testapp_print("Sending failed[%d]\n", err_code);
972 testapp_print("Start sending. handle[%d]\n", handle);
978 static gboolean testapp_test_delete_attachment()
980 int attachment_id = 0;
981 int err_code = EMAIL_ERROR_NONE;
983 testapp_print("\n >>> Input attachment id: ");
984 if (0 >= scanf("%d", &attachment_id))
985 testapp_print("Invalid input. ");
987 if ((err_code = email_delete_attachment(attachment_id)) != EMAIL_ERROR_NONE) {
988 testapp_print("email_delete_attachment failed[%d]\n", err_code);
994 static gboolean testapp_test_get_mail_list()
996 testapp_print("\n >>> testapp_test_get_mail_list : Entered \n");
997 email_mail_list_item_t *mail_list = NULL, **mail_list_pointer = NULL;
999 int count = 0, i = 0;
1001 int start_index = 0;
1002 int limit_count = 0;
1004 int err_code = EMAIL_ERROR_NONE;
1005 int to_get_count = 0;
1006 int is_for_thread_view = 0;
1008 struct tm *temp_time_info;
1010 testapp_print("\n > Enter Account_id(0 = all accounts) : ");
1011 if (0 >= scanf("%d", &account_id))
1012 testapp_print("Invalid input. ");
1014 testapp_print("\n > Enter Mailbox id(0 = all mailboxes) :");
1015 if (0 >= scanf("%d", &mailbox_id))
1016 testapp_print("Invalid input. ");
1018 testapp_print("\n > Enter Sorting : ");
1019 if (0 >= scanf("%d", &sorting))
1020 testapp_print("Invalid input. ");
1022 testapp_print("\n > Enter Start index(starting at 0): ");
1023 if (0 >= scanf("%d", &start_index))
1024 testapp_print("Invalid input. ");
1026 testapp_print("\n > Enter max_count : ");
1027 if (0 >= scanf("%d", &limit_count))
1028 testapp_print("Invalid input. ");
1030 testapp_print("\n > For thread view : ");
1031 if (0 >= scanf("%d", &is_for_thread_view))
1032 testapp_print("Invalid input. ");
1034 testapp_print("\n > Count mails?(1: YES):");
1035 if (0 >= scanf("%d", &to_get_count))
1036 testapp_print("Invalid input. ");
1039 mail_list_pointer = NULL;
1041 mail_list_pointer = &mail_list;
1043 if (is_for_thread_view == -2) {
1044 list_type = EMAIL_LIST_TYPE_LOCAL;
1045 } else if (is_for_thread_view == -1)
1046 list_type = EMAIL_LIST_TYPE_THREAD;
1048 list_type = EMAIL_LIST_TYPE_NORMAL;
1051 if (mailbox_id == 0) {
1052 testapp_print("Calling email_get_mail_list for all mailbox.\n");
1053 err_code = email_get_mail_list(account_id, 0, list_type, start_index, limit_count, sorting, mail_list_pointer, &count);
1055 testapp_print("email_get_mail_list failed - err[%d]\n", err_code);
1057 testapp_print("Calling email_get_mail_list for %d mailbox_id.\n", mailbox_id);
1058 err_code = email_get_mail_list(account_id, mailbox_id, list_type, start_index, limit_count, sorting, mail_list_pointer, &count);
1060 testapp_print("email_get_mail_list failed - err[%d]\n", err_code);
1062 testapp_print("email_get_mail_list >>>>>>count - %d\n", count);
1065 for (i = 0; i < count; i++) {
1066 testapp_print("\n[%d]\n", i);
1067 testapp_print(" >>> mailbox_id [ %d ] \n", mail_list[i].mailbox_id);
1068 testapp_print(" >>> mailbox_type [ %d ] \n", mail_list[i].mailbox_type);
1069 testapp_print(" >>> mail_id [ %d ] \n", mail_list[i].mail_id);
1070 testapp_print(" >>> account_id [ %d ] \n", mail_list[i].account_id);
1071 if (mail_list[i].full_address_from != NULL)
1072 testapp_print(" >>> full_address_from [ %s ] \n", mail_list[i].full_address_from);
1073 if (mail_list[i].email_address_recipient != NULL)
1074 testapp_print(" >>> email_address_recipient [ %s ] \n", mail_list[i].email_address_recipient);
1075 if (mail_list[i].subject != NULL)
1076 testapp_print(" >>> subject [ %s ] \n", mail_list[i].subject);
1077 testapp_print(" >>> body_download_status [ %d ] \n", mail_list[i].body_download_status);
1078 temp_time_info = localtime(&mail_list[i].date_time);
1079 testapp_print(" >>> date_time [ %d/%d/%d %d:%d:%d] \n",
1080 temp_time_info->tm_year + 1900,
1081 temp_time_info->tm_mon+1,
1082 temp_time_info->tm_mday,
1083 temp_time_info->tm_hour,
1084 temp_time_info->tm_min,
1085 temp_time_info->tm_sec);
1086 testapp_print(" >>> flags_seen_field [ %d ] \n", mail_list[i].flags_seen_field);
1087 testapp_print(" >>> priority [ %d ] \n", mail_list[i].priority);
1088 testapp_print(" >>> save_status [ %d ] \n", mail_list[i].save_status);
1089 testapp_print(" >>> lock_status [ %d ] \n", mail_list[i].lock_status);
1090 testapp_print(" >>> attachment_count [ %d ] \n", mail_list[i].attachment_count);
1091 if (!*mail_list[i].preview_text)
1092 testapp_print(" >>> preview_text [ %s ] \n", mail_list[i].preview_text);
1097 testapp_print("\n >>> email_get_mail_list : End \n");
1102 static gboolean testapp_test_get_mail_list_for_thread_view()
1104 testapp_print(" >>> testapp_test_get_mail_list_for_thread_view : Entered \n");
1105 email_mail_list_item_t *mail_list = NULL;
1106 int count = 0, i = 0;
1109 int err_code = EMAIL_ERROR_NONE;
1110 struct tm *time_info;
1113 testapp_print("\nEnter account id\n");
1114 if (0 >= scanf("%d", &account_id))
1115 testapp_print("Invalid input. ");
1117 testapp_print("\nEnter mailbox id\n");
1118 if (0 >= scanf("%d", &mailbox_id))
1119 testapp_print("Invalid input. ");
1122 if (email_get_mail_list(account_id, mailbox_id , EMAIL_LIST_TYPE_THREAD, 0, 500, EMAIL_SORT_DATETIME_HIGH, &mail_list, &count) < 0) {
1123 testapp_print("email_get_mail_list failed : %d\n", err_code);
1126 testapp_print("email_get_mail_list >>>>>>count - %d\n", count);
1128 for (i = 0; i < count; i++) {
1129 testapp_print(" i [%d]\n", i);
1130 testapp_print(" >>> mail_id [ %d ] \n", mail_list[i].mail_id);
1131 testapp_print(" >>> account_id [ %d ] \n", mail_list[i].account_id);
1132 testapp_print(" >>> mailbox_id [ %d ] \n", mail_list[i].mailbox_id);
1133 testapp_print(" >>> full_address_from [ %s ] \n", mail_list[i].full_address_from);
1134 testapp_print(" >>> email_address_recipient [ %s ] \n", mail_list[i].email_address_recipient);
1135 testapp_print(" >>> subject [ %s ] \n", mail_list[i].subject);
1136 testapp_print(" >>> body_download_status [ %d ] \n", mail_list[i].body_download_status);
1137 time_info = localtime(&mail_list[i].date_time);
1138 testapp_print(" >>> date_time [ %s ] \n", asctime_r(time_info, buf));
1139 testapp_print(" >>> flags_seen_field [ %d ] \n", mail_list[i].flags_seen_field);
1140 testapp_print(" >>> priority [ %d ] \n", mail_list[i].priority);
1141 testapp_print(" >>> save_status [ %d ] \n", mail_list[i].save_status);
1142 testapp_print(" >>> lock [ %d ] \n", mail_list[i].lock_status);
1143 testapp_print(" >>> attachment_count [ %d ] \n", mail_list[i].attachment_count);
1144 testapp_print(" >>> preview_text [ %s ] \n", mail_list[i].preview_text);
1145 testapp_print(" >>> thread_id [ %d ] \n", mail_list[i].thread_id);
1146 testapp_print(" >>> thread__item_count [ %d ] \n", mail_list[i].thread_item_count);
1150 testapp_print(" >>> testapp_test_get_mail_list_for_thread_view : End \n");
1154 static gboolean testapp_test_count()
1158 email_list_filter_t *filter_list = NULL;
1160 filter_list = malloc(sizeof(email_list_filter_t) * 3);
1161 memset(filter_list, 0 , sizeof(email_list_filter_t) * 3);
1163 filter_list[0].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
1164 filter_list[0].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_SUBJECT;
1165 filter_list[0].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
1166 filter_list[0].list_filter_item.rule.key_value.string_type_value = strdup("RE");
1167 filter_list[0].list_filter_item.rule.case_sensitivity = false;
1169 filter_list[1].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
1170 filter_list[1].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_OR;
1172 filter_list[2].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
1173 filter_list[2].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_TO;
1174 filter_list[2].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
1175 filter_list[2].list_filter_item.rule.key_value.string_type_value = strdup("RE");
1176 filter_list[2].list_filter_item.rule.case_sensitivity = false;
1178 if (EMAIL_ERROR_NONE == email_count_mail(filter_list, 3, &total, &unseen))
1179 printf("\n Total: %d, Unseen: %d \n", total, unseen);
1184 static gboolean testapp_test_move_mails_to_mailbox_of_another_account()
1186 int err = EMAIL_ERROR_NONE;
1187 int mail_id_count = 0 ;
1188 int *mail_id_array = NULL;
1189 int source_mailbox_id = 0;
1190 int target_mailbox_id = 0;
1194 testapp_print("\n > Enter source mailbox id: ");
1195 if (0 >= scanf("%d", &source_mailbox_id))
1196 testapp_print("Invalid input. ");
1198 testapp_print("\n > Enter target mailbox id: ");
1199 if (0 >= scanf("%d", &target_mailbox_id))
1200 testapp_print("Invalid input. ");
1202 testapp_print("\n > Enter mail count: ");
1203 if (0 >= scanf("%d", &mail_id_count))
1204 testapp_print("Invalid input. ");
1206 mail_id_count = (mail_id_count < 5000) ? mail_id_count : 5000;
1208 if (mail_id_count > 0) {
1209 mail_id_array = malloc(sizeof(int) * mail_id_count);
1212 for (i = 0; i < mail_id_count; i++) {
1213 testapp_print("\n > Enter mail id: ");
1214 if (0 >= scanf("%d", (mail_id_array + i)))
1215 testapp_print("Invalid input. ");
1218 err = email_move_mails_to_mailbox_of_another_account(source_mailbox_id, mail_id_array, mail_id_count, target_mailbox_id, &task_id);
1220 testapp_print("\nemail_move_mails_to_mailbox_of_another_account returns [%d], tast_id [%d] \n", err, task_id);
1224 static gboolean copy_file(char *input_source_path, char *input_dest_path)
1226 int childExitStatus;
1228 if (!input_source_path || !input_dest_path) {
1231 testapp_print("copy_file started\n");
1236 testapp_print("Copying file [%s] [%s]\n", input_source_path, input_dest_path);
1237 execl("/bin/cp", "/bin/cp", input_source_path, input_dest_path, (char *)0);
1239 testapp_print("Wating child process\n");
1240 pid_t ws = waitpid(pid, &childExitStatus, WNOHANG);
1241 if (ws == -1) { /* error - handle as you wish */
1242 testapp_print("waitpid returns error\n");
1245 if (WIFEXITED(childExitStatus)) {
1246 /* exit code in childExitStatus */
1247 WEXITSTATUS(childExitStatus); /* zero is normal exit */
1248 testapp_print("WEXITSTATUS\n");
1249 /* handle non-zero as you wish */
1250 } else if (WIFSIGNALED(childExitStatus)) { /* killed */
1251 testapp_print("WIFSIGNALED\n");
1252 } else if (WIFSTOPPED(childExitStatus)) { /* stopped */
1253 testapp_print("WIFSTOPPED\n");
1256 testapp_print("copy_file finished\n");
1261 static gboolean testapp_test_send_mail_with_downloading_attachment_of_original_mail()
1263 int err = EMAIL_ERROR_NONE;
1264 int original_mail_id = 0;
1265 int original_attachment_count = 0;
1268 char *plain_text_path = MAIL_TEMP_BODY;
1269 char *html_file_path = HTML_TEMP_BODY;
1270 char new_subject[4086] = { 0, };
1271 /* FILE *body_file; */
1272 email_mail_data_t *original_mail_data = NULL;
1273 email_mailbox_t *outbox = NULL;
1274 email_attachment_data_t *original_attachment_array = NULL;
1276 testapp_print("\n > Enter original mail id: ");
1277 if (0 >= scanf("%d", &original_mail_id))
1278 testapp_print("Invalid input. ");
1280 /* Get original mail */
1281 if ((err = email_get_mail_data(original_mail_id, &original_mail_data)) != EMAIL_ERROR_NONE || !original_mail_data) {
1282 testapp_print("email_get_mail_data failed [%d]\n", err);
1286 /* Get attachment of original mail */
1287 if ((err = email_get_attachment_data_list(original_mail_id, &original_attachment_array, &original_attachment_count)) != EMAIL_ERROR_NONE || !original_attachment_array) {
1288 testapp_print("email_get_attachment_data_list failed [%d]\n", err);
1292 /* Remove attachment file path */
1293 for (i = 0; i < original_attachment_count; i++) {
1294 original_attachment_array[i].save_status = 0;
1295 if (original_attachment_array[i].attachment_path)
1296 free(original_attachment_array[i].attachment_path);
1297 original_attachment_array[i].attachment_path = NULL;
1300 /* Set reference mail id */
1301 original_mail_data->reference_mail_id = original_mail_data->mail_id;
1302 original_mail_data->body_download_status = 1;
1304 /* Set from address */
1305 if (!original_mail_data->full_address_from) {
1306 original_mail_data->full_address_from = strdup("<abc@abc.com>");
1309 /* Rewrite subject */
1310 if (original_mail_data->subject) {
1311 snprintf(new_subject, 4086, "Fw:%s", original_mail_data->subject);
1312 free(original_mail_data->subject);
1313 original_mail_data->subject = NULL;
1315 snprintf(new_subject, 4086, "Forward test");
1318 original_mail_data->subject = strdup(new_subject);
1320 /* Set mailbox information */
1321 if ((err = email_get_mailbox_by_mailbox_type(original_mail_data->account_id, EMAIL_MAILBOX_TYPE_OUTBOX, &outbox)) != EMAIL_ERROR_NONE || !outbox) {
1322 testapp_print("email_get_mailbox_by_mailbox_type failed [%d]\n", err);
1325 original_mail_data->mailbox_id = outbox->mailbox_id;
1326 original_mail_data->mailbox_type = outbox->mailbox_type;
1328 /* Copy body text */
1329 if (original_mail_data->file_path_html) {
1330 copy_file(original_mail_data->file_path_html, html_file_path);
1331 /*execl("/bin/cp", "/bin/cp", original_mail_data->file_path_html, html_file_path,(char *)0); */
1332 free(original_mail_data->file_path_html);
1333 original_mail_data->file_path_html = strdup(html_file_path);
1336 if (original_mail_data->file_path_plain) {
1337 copy_file(original_mail_data->file_path_plain, plain_text_path);
1338 /*execl("/bin/cp", "/bin/cp", original_mail_data->file_path_plain, plain_text_path,(char *)0);*/
1339 free(original_mail_data->file_path_plain);
1340 original_mail_data->file_path_plain = strdup(plain_text_path);
1345 body_file = fopen(body_file_path, "w");
1347 testapp_print("\n body_file [%p]\n", body_file);
1349 if (body_file == NULL) {
1350 testapp_print("\n fopen [%s]failed\n", body_file_path);
1354 for (i = 0; i < 100; i++)
1355 fprintf(body_file, "Mail sending Test. [%d]\n", i);
1362 if ((err = email_add_mail(original_mail_data, original_attachment_array, original_attachment_count, NULL, false)) != EMAIL_ERROR_NONE) {
1363 testapp_print("email_get_attachment_data_list failed [%d]\n", err);
1364 email_free_mailbox(&outbox, 1);
1369 if ((err = email_send_mail_with_downloading_attachment_of_original_mail(original_mail_data->mail_id, &handle)) != EMAIL_ERROR_NONE) {
1370 testapp_print("email_send_mail_with_downloading_attachment_of_original_mail failed [%d]\n", err);
1371 email_free_mailbox(&outbox, 1);
1375 if (original_mail_data)
1376 email_free_mail_data(&original_mail_data, 1);
1379 email_free_mailbox(&outbox, 1);
1381 if (original_attachment_array)
1382 email_free_attachment_data(&original_attachment_array, original_attachment_count);
1387 static gboolean testapp_test_get_mail_data()
1389 int err = EMAIL_ERROR_NONE;
1391 email_mail_data_t *mail_data = NULL;
1393 testapp_print("\n > Enter mail id: ");
1394 if (0 >= scanf("%d", &mail_id))
1395 testapp_print("Invalid input. ");
1397 /* Get original mail */
1398 if ((err = email_get_mail_data(mail_id, &mail_data)) != EMAIL_ERROR_NONE || !mail_data) {
1399 testapp_print("email_get_mail_data failed [%d]\n", err);
1403 testapp_print("mail_id [%d]\n", mail_data->mail_id);
1404 testapp_print("account_id [%d]\n", mail_data->account_id);
1405 testapp_print("mailbox_id [%d]\n", mail_data->mailbox_id);
1406 testapp_print("mailbox_type [%d]\n", mail_data->mailbox_type);
1407 if (mail_data->subject)
1408 testapp_print("subject [%s]\n", mail_data->subject);
1409 testapp_print("date_time [%d]\n", mail_data->date_time);
1410 testapp_print("server_mail_status [%d]\n", mail_data->server_mail_status);
1412 if (mail_data->server_mailbox_name)
1413 testapp_print("server_mailbox_name [%s]\n", mail_data->server_mailbox_name);
1415 if (mail_data->server_mail_id)
1416 testapp_print("server_mail_id [%s]\n", mail_data->server_mail_id);
1418 if (mail_data->message_id)
1419 testapp_print("message_id [%s]\n", mail_data->message_id);
1421 testapp_print("reference_mail_id [%d]\n", mail_data->reference_mail_id);
1423 if (mail_data->full_address_from)
1424 testapp_print("full_address_from [%s]\n", mail_data->full_address_from);
1426 if (mail_data->full_address_reply)
1427 testapp_print("full_address_reply [%s]\n", mail_data->full_address_reply);
1429 if (mail_data->full_address_to)
1430 testapp_print("full_address_to [%s]\n", mail_data->full_address_to);
1432 if (mail_data->full_address_cc)
1433 testapp_print("full_address_cc [%s]\n", mail_data->full_address_cc);
1435 if (mail_data->full_address_bcc)
1436 testapp_print("full_address_bcc [%s]\n", mail_data->full_address_bcc);
1438 if (mail_data->full_address_return)
1439 testapp_print("full_address_return [%s]\n", mail_data->full_address_return);
1441 if (mail_data->email_address_sender)
1442 testapp_print("email_address_sender [%s]\n", mail_data->email_address_sender);
1444 if (mail_data->email_address_recipient)
1445 testapp_print("email_address_recipient [%s]\n", mail_data->email_address_recipient);
1447 if (mail_data->alias_sender)
1448 testapp_print("alias_sender [%s]\n", mail_data->alias_sender);
1450 if (mail_data->alias_recipient)
1451 testapp_print("alias_recipient [%s]\n", mail_data->alias_recipient);
1453 testapp_print("body_download_status [%d]\n", mail_data->body_download_status);
1455 if (mail_data->file_path_plain)
1456 testapp_print("file_path_plain [%s]\n", mail_data->file_path_plain);
1458 if (mail_data->file_path_html)
1459 testapp_print("file_path_html [%s]\n", mail_data->file_path_html);
1461 testapp_print("file_path_mime_entity [%s]\n", mail_data->file_path_mime_entity);
1462 testapp_print("mail_size [%d]\n", mail_data->mail_size);
1463 testapp_print("flags_seen_field [%d]\n", mail_data->flags_seen_field);
1464 testapp_print("flags_deleted_field [%d]\n", mail_data->flags_deleted_field);
1465 testapp_print("flags_flagged_field [%d]\n", mail_data->flags_flagged_field);
1466 testapp_print("flags_answered_field [%d]\n", mail_data->flags_answered_field);
1467 testapp_print("flags_recent_field [%d]\n", mail_data->flags_recent_field);
1468 testapp_print("flags_draft_field [%d]\n", mail_data->flags_draft_field);
1469 testapp_print("flags_forwarded_field [%d]\n", mail_data->flags_forwarded_field);
1470 testapp_print("DRM_status [%d]\n", mail_data->DRM_status);
1471 testapp_print("priority [%d]\n", mail_data->priority);
1472 testapp_print("save_status [%d]\n", mail_data->save_status);
1473 testapp_print("lock_status [%d]\n", mail_data->lock_status);
1474 testapp_print("report_status [%d]\n", mail_data->report_status);
1475 testapp_print("attachment_count [%d]\n", mail_data->attachment_count);
1476 testapp_print("inline_content_count [%d]\n", mail_data->inline_content_count);
1477 testapp_print("thread_id [%d]\n", mail_data->thread_id);
1478 testapp_print("thread_item_count [%d]\n", mail_data->thread_item_count);
1480 if (mail_data->preview_text)
1481 testapp_print("preview_text [%s]\n", mail_data->preview_text);
1483 testapp_print("meeting_request_status [%d]\n", mail_data->meeting_request_status);
1484 testapp_print("message_class [%d]\n", mail_data->message_class);
1485 testapp_print("digest_type [%d]\n", mail_data->digest_type);
1486 testapp_print("smime_type [%d]\n", mail_data->smime_type);
1487 testapp_print("scheduled_sending_time [%d]\n", mail_data->scheduled_sending_time);
1488 testapp_print("remaining_resend_times [%d]\n", mail_data->remaining_resend_times);
1489 testapp_print("eas_data_length [%d]\n", mail_data->eas_data_length);
1494 static gboolean testapp_test_schedule_sending_mail()
1496 int added_mail_id = 0;
1497 int err = EMAIL_ERROR_NONE;
1499 time_t time_to_send;
1501 testapp_add_mail_for_sending(&added_mail_id);
1503 if (added_mail_id) {
1504 time(&time_to_send);
1507 testapp_print("Calling email_schedule_sending_mail...\n");
1509 if (email_schedule_sending_mail(added_mail_id, time_to_send) < 0) {
1510 testapp_print("email_schedule_sending_mail failed[%d]\n", err);
1512 testapp_print("Start sending. handle[%d]\n", handle);
1519 static gboolean testapp_test_set_flags_field()
1524 testapp_print("\n > Enter Account ID: ");
1525 if (0 >= scanf("%d", &account_id))
1526 testapp_print("Invalid input. ");
1528 testapp_print("\n > Enter Mail ID: ");
1529 if (0 >= scanf("%d", &mail_id))
1530 testapp_print("Invalid input. ");
1532 if (email_set_flags_field(account_id, &mail_id, 1, EMAIL_FLAGS_FLAGGED_FIELD, 1, 1) < 0)
1533 testapp_print("email_set_flags_field failed");
1535 testapp_print("email_set_flags_field success");
1540 static gboolean testapp_test_download_body()
1543 int handle = 0, err;
1545 testapp_print("\n > Enter Mail Id: ");
1546 if (0 >= scanf("%d", &mail_id))
1547 testapp_print("Invalid input. ");
1548 err = email_download_body(mail_id, 0, &handle);
1550 testapp_print("email_download_body failed");
1552 testapp_print("email_download_body success");
1553 testapp_print("handle[%d]\n", handle);
1559 static gboolean testapp_test_cancel_download_body()
1566 email_mailbox_t mailbox;
1567 memset(&mailbox, 0x00, sizeof(email_mailbox_t));
1569 testapp_print("\n > Enter account_id: ");
1570 if (0 >= scanf("%d", &account_id))
1571 testapp_print("Invalid input. ");
1573 testapp_print("\n > Enter mail id: ");
1574 if (0 >= scanf("%d", &mail_id))
1575 testapp_print("Invalid input. ");
1577 if (email_download_body(mail_id, 0, &handle) < 0)
1578 testapp_print("email_download_body failed");
1580 testapp_print("email_download_body success\n");
1581 testapp_print("Do u want to cancel download job>>>>>1/0\n");
1582 if (0 >= scanf("%d", &yes))
1583 testapp_print("Invalid input. ");
1585 if (email_cancel_job(account_id, handle , EMAIL_CANCELED_BY_USER) < 0)
1586 testapp_print("email_cancel_job failed..!");
1588 testapp_print("email_cancel_job success..!");
1589 testapp_print("handle[%d]\n", handle);
1596 static gboolean testapp_test_download_attachment()
1599 int attachment_no = 0;
1602 testapp_print("\n > Enter Mail Id: ");
1603 if (0 >= scanf("%d", &mail_id))
1604 testapp_print("Invalid input. ");
1606 testapp_print("\n > Enter attachment number: ");
1607 if (0 >= scanf("%d", &attachment_no))
1608 testapp_print("Invalid input. ");
1610 if (email_download_attachment(mail_id, attachment_no, &handle) < 0)
1611 testapp_print("email_download_attachment failed");
1613 testapp_print("email_download_attachment success");
1614 testapp_print("handle[%d]\n", handle);
1620 static gboolean testapp_test_get_attachment_data_list()
1622 int err = EMAIL_ERROR_NONE;
1625 int test_attachment_data_count;
1626 email_attachment_data_t *test_attachment_data_list = NULL;
1628 testapp_print("\n > Enter Mail id: ");
1629 if (0 >= scanf("%d", &mail_id))
1630 testapp_print("Invalid input. ");
1632 if ((err = email_get_attachment_data_list(mail_id, &test_attachment_data_list, &test_attachment_data_count)) != EMAIL_ERROR_NONE) {
1633 testapp_print("email_get_attachment_data_list() failed [%d]\n", err);
1636 if (test_attachment_data_list) {
1637 for (i = 0; i < test_attachment_data_count; i++) {
1638 testapp_print("index [%d]\n", i);
1639 testapp_print("attachment_name [%s]\n", test_attachment_data_list[i].attachment_name);
1640 testapp_print("attachment_path [%s]\n", test_attachment_data_list[i].attachment_path);
1641 testapp_print("attachment_size [%d]\n", test_attachment_data_list[i].attachment_size);
1642 testapp_print("mail_id [%d]\n", test_attachment_data_list[i].mail_id);
1643 testapp_print("attachment_mime_type [%s]\n", test_attachment_data_list[i].attachment_mime_type);
1645 email_free_attachment_data(&test_attachment_data_list, test_attachment_data_count);
1653 static gboolean testapp_test_get_meeting_request()
1656 int err = EMAIL_ERROR_NONE;
1657 email_meeting_request_t *meeting_request;
1659 testapp_print("\n > Enter Mail Id: ");
1660 if (0 >= scanf("%d", &mail_id))
1661 testapp_print("Invalid input. ");
1663 err = email_get_meeting_request(mail_id, &meeting_request);
1665 testapp_print("err[%d]\n", err);
1667 if (err == EMAIL_ERROR_NONE && meeting_request) {
1668 testapp_print("mail_id [%d]\n", meeting_request->mail_id);
1669 testapp_print("global_object_id [%s]\n", meeting_request->global_object_id);
1670 testapp_print("meeting_response [%d]\n", meeting_request->meeting_response);
1673 email_free_meeting_request(&meeting_request, 1);
1677 static gboolean testapp_test_retry_send()
1682 email_mailbox_t mailbox;
1683 memset(&mailbox, 0x00, sizeof(email_mailbox_t));
1685 testapp_print("\n > Enter Mail Id: ");
1686 if (0 >= scanf("%d", &mail_id))
1687 testapp_print("Invalid input. ");
1689 testapp_print("\n > Enter timeout in seconds: ");
1690 if (0 >= scanf("%d", &timeout))
1691 testapp_print("Invalid input. ");
1693 if (email_retry_sending_mail(mail_id, timeout) < 0)
1694 testapp_print("email_retry_sending_mail failed");
1698 static gboolean testapp_test_get_attachment_data()
1700 int attachment_id = 0;
1701 email_attachment_data_t *attachment = NULL;
1703 testapp_print("\n > Enter attachment id: ");
1704 if (0 >= scanf("%d", &attachment_id))
1705 testapp_print("Invalid input. ");
1707 email_get_attachment_data(attachment_id, &attachment);
1710 testapp_print("attachment_name [%s]\n", attachment->attachment_name);
1711 testapp_print("attachment_path [%s]\n", attachment->attachment_path);
1712 testapp_print("attachment_size [%d]\n", attachment->attachment_size);
1713 testapp_print("mail_id [%d]\n", attachment->mail_id);
1714 testapp_print("attachment_mime_type [%s]\n", attachment->attachment_mime_type);
1720 static gboolean testapp_test_move_all_mails_to_mailbox()
1722 int err = EMAIL_ERROR_NONE;
1724 int dest_mailbox_id;
1726 testapp_print("src mailbox id> ");
1727 if (0 >= scanf("%d", &src_mailbox_id))
1728 testapp_print("Invalid input. ");
1730 testapp_print("dest mailbox id> ");
1731 if (0 >= scanf("%d", &dest_mailbox_id))
1732 testapp_print("Invalid input. ");
1734 err = email_move_all_mails_to_mailbox(src_mailbox_id, dest_mailbox_id);
1736 testapp_print("email_move_all_mails_to_mailbox failed: err[%d]\n", err);
1738 testapp_print("email_move_all_mails_to_mailbox suceeded\n");
1744 static gboolean testapp_test_get_totaldiskusage()
1746 unsigned long total_size = 0;
1747 int err_code = EMAIL_ERROR_NONE ;
1749 err_code = email_get_disk_space_usage(&total_size);
1751 testapp_print("email_get_disk_space_usage failed err : %d\n", err_code);
1753 testapp_print("email_get_disk_space_usage SUCCESS, total disk usage in KB : %ld \n", total_size);
1760 static gboolean testapp_test_db_test()
1762 int err = EMAIL_ERROR_NONE;
1769 to = (char *)malloc(500000);
1770 cc = (char *)malloc(500000);
1771 bcc = (char *)malloc(500000);
1773 memset(to, 0x00, sizeof(500000));
1774 memset(cc, 0x00, sizeof(500000));
1775 memset(bcc, 0x00, sizeof(500000));
1777 testapp_print("Input Mail id:\n");
1778 if (0 >= scanf("%d", &mail_id))
1779 testapp_print("Invalid input. ");
1780 testapp_print("Input Account id:\n");
1781 if (0 >= scanf("%d", &account_id))
1782 testapp_print("Invalid input. ");
1783 testapp_print("Input TO field:\n");
1784 if (0 >= scanf("%s", to))
1785 testapp_print("Invalid input. ");
1786 testapp_print("Input CC field:\n");
1787 if (0 >= scanf("%s", cc))
1788 testapp_print("Invalid input. ");
1789 testapp_print("Input BCC field:\n");
1790 if (0 >= scanf("%s", bcc))
1791 testapp_print("Invalid input. ");
1793 if (emstorage_test(NULL, mail_id, account_id, to, cc, bcc, &err) == true) {
1794 testapp_print(">> Saving Succeeded\n");
1796 testapp_print(">> Saving Failed[%d]\n", err);
1806 static gboolean testapp_test_address_format_check_test()
1813 int err = EMAIL_ERROR_NONE;
1814 char *pAddress = NULL;
1815 char input_address[8096];
1816 char *address_list[] = {
1819 "tom@gmail.com@gmail.com",
1821 "\"Tom\"<tom@gmail.com>",
1822 "\"Tom\"[tom@gmail.com]",
1823 "\"Tom\"<tom,@gmail.com>",
1827 "<tom@gmail.com>,tom@gmail.com",
1828 "<tom@gmail.com>;tom@gmail.com",
1837 "\"\"Tom\"<tom,@gmail.com>",
1838 "tom@gmail.com,tom@gmail.com",
1840 "<tom@gmail.com>,tom@.gmail.com",
1841 "&& tom@live.com ----",
1842 "madhu <tom@gmail.com>",
1843 "tom@gmail.com, && tom@live.com",
1844 "tom@gmail.com , && tom@live.com",
1845 "< tom@gmail.com > , < tom@.gmail.com >",
1846 "tom@gmail.com , tom@gmail.com",
1848 "<to m@gmail.com >",
1849 "<tom@gmail.com>;tom@gmail.com",
1850 "Tom< tom@gmail.com > , Tom <tom@gmail.com>",
1851 " \"Tom\" < tom@gmail.com> , \"Tom\" < tom@gmail.com> , Tom < tom@gmail.com> ; Tom < tom@gmail.com>,\"tomtom\" < tom@aol.com>,\"tomtom\" < tom@aol.com> ,\"tomtom\" <tom@aol.com>;<tom@live.com>, <tom@live.com>; \"tomtomtomtom\" <tom@live.com> ; \"tomtomtomtom\" <tom@live.com>,\"Tom\" < tom@gmail.com>",
1852 "<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>,<tom@gmail.com>",
1853 " tom@gmail.com ; < tom@gmail.com > ",
1854 "\"Tom\" < tom@gmail.com > ; mama < tom@gmail.com > , abcd@gmail.com , abc@gmail.com ,\"tomtom\" <tom@aol.com>,\"tomtom\" < tom@aol.com> ;\"tomtom\" < tom@aol.com > ,\"tomtom\" <tom@aol.com> , \"tomtomtomtom\" <tom@live.com> ",
1855 " \"tomtom\" <tom@aol.com> ;\"tomtom\" <tom@aol.com> ; ",
1856 " tom@gmail.com , tom@gmail.com , tom@gmail.com; Tom < tom@gmail.com > ,< tom@aol.com>, <tom@aol.com> ,<tom@aol.com>;<tom@live.com>, tom@live.com;tom@live.com; \"tomtomtomtom\" <tom@live.com>,\"Tom\" < tom@gmail.com> ; ",
1857 "<tom@aol.com> , \"tomtomtomtom\" <tom@live.com>,\"Tom\" < tom@gmail.com> ; ",
1858 " Tom <tom@gmail.com>,Tom <tom@gmail.com>,Tom <tom@gmail.com>,Tom <tom@gmail.com>,Tom < tom@gmail.com> ,<tom@gmail.com>,Tom <tom@gmail.com >,Tom< tom@gmail.com > , Tom <tom@gmail.com>,Tom <tom@gmail.com>,Tom <tom@gmail.com>,Tom <tom@gmail.com>,Tom <tom@gmail.com>,Tom <tom@gmail.com>,Tom <tom@gmail.com>,Tom <tom@gmail.com>",
1861 int address_count = 0;
1863 testapp_print("Select input method:\n");
1864 testapp_print("1. Test data\n");
1865 testapp_print("2. Keyboard\n");
1866 if (0 >= scanf("%d", &type);
1871 for (i = 0; address_list[i] != NULL; i++) {
1872 testapp_print("[%d] addr[%s]\n", i, address_list[i]);
1875 testapp_print("Choose address to be tested:[99:quit]\n");
1876 if (0 >= scanf("%d", &index);
1880 testapp_print(">> [%d] Checking?(1:Yes, Other:No) [%s]\n", index, address_list[index]);
1881 if (0 >= scanf("%d", &check_yn);
1882 if (check_yn == 1) {
1883 pAddress = strdup(address_list[index]);
1884 if (em_verify_email_address(pAddress, false, &err ) == true) {
1885 testapp_print("<< [%d] Checking Succeeded : addr[%s]\n", index, address_list[index]);
1888 testapp_print("<< [%d] Checking Failed : addr[%s], err[%d]\n", index, address_list[index], err);
1896 testapp_print("<< [%d] Skipped : addr[%s]\n", index, address_list[index]);
1902 testapp_print("Input address: \n");
1903 if (0 >= scanf("%s", input_address);
1904 if (em_verify_email_address(input_address, false, &err ) == true) {
1905 testapp_print(">> Saving Succeeded : addr[%s]\n", input_address);
1908 testapp_print(">> Saving Failed : addr[%s], err[%d]\n", input_address, err);
1912 testapp_print("wrong nuber... [%d]\n", type);
1919 static gboolean testapp_test_get_max_mail_count()
1922 int err = EMAIL_ERROR_NONE;
1924 err = email_get_max_mail_count(&max_count);
1925 testapp_print("\n\t>>>>> email_get_max_mail_count() return [%d][%d]\n\n", max_count, err);
1930 #include "email-storage.h"
1931 static gboolean testapp_test_test_get_thread_information()
1933 int error_code, thread_id = 38;
1934 email_mail_list_item_t *result_mail;
1936 if ((error_code = email_get_thread_information_ex(thread_id, &result_mail)) == EMAIL_ERROR_NONE) {
1937 testapp_print("email_get_thread_information returns = %d\n", error_code);
1938 testapp_print("subject = %s\n", result_mail->subject);
1939 testapp_print("mail_id = %d\n", result_mail->mail_id);
1940 testapp_print("full_address_from = %s\n", result_mail->full_address_from);
1941 testapp_print("thrad_id = %d\n", result_mail->thread_id);
1942 testapp_print("count = %d\n", result_mail->thread_item_count);
1948 static gboolean testapp_test_get_address_info_list()
1950 testapp_print(" >>> testapp_test_get_address_info_list : Entered \n");
1955 email_address_info_list_t *address_info_list = NULL;
1956 email_address_info_t *p_address_info = NULL;
1960 memset(buf, 0x00, sizeof(buf));
1961 testapp_print("\n > Enter mail_id: ");
1962 if (0 >= scanf("%d", &mail_id))
1963 testapp_print("Invalid input. ");
1965 email_get_address_info_list(mail_id, &address_info_list);
1967 testapp_print("===================================================\n");
1968 testapp_print("\t\t\t address info list\n");
1969 testapp_print("===================================================\n");
1970 testapp_print("address_type\t address \t\tdisplay_name\t contact id\n");
1971 testapp_print("===================================================\n");
1973 for (i = EMAIL_ADDRESS_TYPE_FROM; i <= EMAIL_ADDRESS_TYPE_BCC; i++) {
1975 case EMAIL_ADDRESS_TYPE_FROM:
1976 list = address_info_list->from;
1978 case EMAIL_ADDRESS_TYPE_TO:
1979 list = address_info_list->to;
1981 case EMAIL_ADDRESS_TYPE_CC:
1982 list = address_info_list->cc;
1984 case EMAIL_ADDRESS_TYPE_BCC:
1985 list = address_info_list->bcc;
1989 /* delete dynamic-allocated memory for each item */
1990 node = g_list_first(list);
1991 while (node != NULL) {
1992 p_address_info = (email_address_info_t *)node->data;
1993 testapp_print("%d\t\t%s\t%s\t%d\n", p_address_info->address_type, p_address_info->address, p_address_info->display_name, p_address_info->contact_id);
1995 node = g_list_next(node);
1997 testapp_print("\n");
1999 testapp_print("===================================================\n");
2001 if (address_info_list)
2002 email_free_address_info_list(&address_info_list);
2004 testapp_print(" >>> testapp_test_get_address_info_list : END \n");
2008 static gboolean testapp_test_search_mail_on_server()
2010 testapp_print(" >>> testapp_test_search_mail_on_server : Entered \n");
2012 int err_code = EMAIL_ERROR_NONE;
2015 int search_key_value_integer = 0;
2016 int search_filter_count = 0;
2017 email_search_filter_type search_filter_type = 0;
2018 email_search_filter_t search_filter[10];
2020 time_t current_time = 0;
2021 char search_key_value_string[256];
2023 testapp_print("input account id : ");
2024 if (0 >= scanf("%d", &account_id))
2025 testapp_print("Invalid input. ");
2027 testapp_print("input mailbox id : ");
2028 if (0 >= scanf("%d", &mailbox_id))
2029 testapp_print("Invalid input. ");
2031 memset(&search_filter, 0x00, sizeof(email_search_filter_t) * 10);
2035 " EMAIL_SEARCH_FILTER_TYPE_MESSAGE_NO = 1, (integer type ) \n"
2036 " EMAIL_SEARCH_FILTER_TYPE_UID = 2, (integer type ) \n"
2037 " EMAIL_SEARCH_FILTER_TYPE_ALL = 3, (integer type ) \n"
2038 " EMAIL_SEARCH_FILTER_TYPE_BCC = 7, (string type ) \n"
2039 " EMAIL_SEARCH_FILTER_TYPE_BODY = 8, (string type ) \n"
2040 " EMAIL_SEARCH_FILTER_TYPE_CC = 9, (string type ) \n"
2041 " EMAIL_SEARCH_FILTER_TYPE_FROM = 10, (string type ) \n"
2042 " EMAIL_SEARCH_FILTER_TYPE_KEYWORD = 11, (string type ) \n"
2043 " EMAIL_SEARCH_FILTER_TYPE_TEXT = 12, (string type ) \n"
2044 " EMAIL_SEARCH_FILTER_TYPE_SUBJECT = 13, (string type ) \n"
2045 " EMAIL_SEARCH_FILTER_TYPE_TO = 15, (string type ) \n"
2046 " EMAIL_SEARCH_FILTER_TYPE_SIZE_LARSER = 16, (integet type ) \n"
2047 " EMAIL_SEARCH_FILTER_TYPE_SIZE_SMALLER = 17, (integet type ) \n"
2048 " EMAIL_SEARCH_FILTER_TYPE_SENT_DATE_BEFORE = 20, (time type ) \n"
2049 " EMAIL_SEARCH_FILTER_TYPE_SENT_DATE_ON = 21, (time type ) \n"
2050 " EMAIL_SEARCH_FILTER_TYPE_SENT_DATE_SINCE = 22, (time type ) \n"
2051 " EMAIL_SEARCH_FILTER_TYPE_FLAGS_ANSWERED = 26, (integer type ) \n"
2052 " EMAIL_SEARCH_FILTER_TYPE_FLAGS_NEW = 27, (integer type ) \n"
2053 " EMAIL_SEARCH_FILTER_TYPE_FLAGS_DELETED = 28, (integer type ) \n"
2054 " EMAIL_SEARCH_FILTER_TYPE_FLAGS_OLD = 29, (integer type ) \n"
2055 " EMAIL_SEARCH_FILTER_TYPE_FLAGS_DRAFT = 30, (integer type ) \n"
2056 " EMAIL_SEARCH_FILTER_TYPE_FLAGS_FLAGED = 32, (integer type ) \n"
2057 " EMAIL_SEARCH_FILTER_TYPE_FLAGS_RECENT = 34, (integer type ) \n"
2058 " EMAIL_SEARCH_FILTER_TYPE_FLAGS_SEEN = 36, (integer type ) \n"
2059 " EMAIL_SEARCH_FILTER_TYPE_MESSAGE_ID = 43, (string type ) \n"
2060 " EMAIL_SEARCH_FILTER_TYPE_HEADER_PRIORITY = 50, (integer type ) \n"
2061 " EMAIL_SEARCH_FILTER_TYPE_ATTACHMENT_NAME = 60, (string type ) \n"
2062 " EMAIL_SEARCH_FILTER_TYPE_CHARSET = 61, (string type ) \n"
2063 " EMAIL_SEARCH_FILTER_TYPE_USER_DEFINED = 62, (string type ) \n"
2066 testapp_print("input search filter type : ");
2067 if (0 >= scanf("%d", (int *)&search_filter_type))
2068 testapp_print("Invalid input. ");
2070 search_filter[search_filter_count].search_filter_type = search_filter_type;
2072 switch (search_filter_type) {
2073 case EMAIL_SEARCH_FILTER_TYPE_MESSAGE_NO:
2074 case EMAIL_SEARCH_FILTER_TYPE_UID:
2075 case EMAIL_SEARCH_FILTER_TYPE_ALL:
2076 case EMAIL_SEARCH_FILTER_TYPE_SIZE_LARSER:
2077 case EMAIL_SEARCH_FILTER_TYPE_SIZE_SMALLER:
2078 case EMAIL_SEARCH_FILTER_TYPE_FLAGS_ANSWERED:
2079 case EMAIL_SEARCH_FILTER_TYPE_FLAGS_NEW:
2080 case EMAIL_SEARCH_FILTER_TYPE_FLAGS_DELETED:
2081 case EMAIL_SEARCH_FILTER_TYPE_FLAGS_OLD:
2082 case EMAIL_SEARCH_FILTER_TYPE_FLAGS_DRAFT:
2083 case EMAIL_SEARCH_FILTER_TYPE_FLAGS_FLAGED:
2084 case EMAIL_SEARCH_FILTER_TYPE_FLAGS_RECENT:
2085 case EMAIL_SEARCH_FILTER_TYPE_FLAGS_SEEN:
2086 case EMAIL_SEARCH_FILTER_TYPE_HEADER_PRIORITY:
2087 testapp_print("input search filter key value : ");
2088 if (0 >= scanf("%d", &search_key_value_integer))
2089 testapp_print("Invalid input. ");
2090 search_filter[search_filter_count].search_filter_key_value.integer_type_key_value = search_key_value_integer;
2093 case EMAIL_SEARCH_FILTER_TYPE_BCC:
2094 case EMAIL_SEARCH_FILTER_TYPE_BODY:
2095 case EMAIL_SEARCH_FILTER_TYPE_CC:
2096 case EMAIL_SEARCH_FILTER_TYPE_FROM:
2097 case EMAIL_SEARCH_FILTER_TYPE_KEYWORD:
2098 case EMAIL_SEARCH_FILTER_TYPE_TEXT:
2099 case EMAIL_SEARCH_FILTER_TYPE_SUBJECT:
2100 case EMAIL_SEARCH_FILTER_TYPE_TO:
2101 case EMAIL_SEARCH_FILTER_TYPE_MESSAGE_ID:
2102 case EMAIL_SEARCH_FILTER_TYPE_ATTACHMENT_NAME:
2103 case EMAIL_SEARCH_FILTER_TYPE_CHARSET:
2104 case EMAIL_SEARCH_FILTER_TYPE_USER_DEFINED:
2105 testapp_print("input search filter key value : ");
2106 int readn = read(0, search_key_value_string, 256);
2108 testapp_print("Invalid input. ");
2110 search_filter[search_filter_count].search_filter_key_value.string_type_key_value = strndup(search_key_value_string, readn - 1);
2113 case EMAIL_SEARCH_FILTER_TYPE_SENT_DATE_BEFORE:
2114 case EMAIL_SEARCH_FILTER_TYPE_SENT_DATE_ON:
2115 case EMAIL_SEARCH_FILTER_TYPE_SENT_DATE_SINCE:
2116 time(¤t_time);
2117 /* TODO : write codes for converting string to time */
2118 /* search_filter.search_filter_key_value.time_type_key_value = search_key_value_string; */
2119 search_filter[search_filter_count].search_filter_key_value.time_type_key_value = current_time;
2122 testapp_print("END filter type [%d]", search_filter_type);
2126 if (!search_filter_type)
2129 search_filter_count++;
2132 if ((err_code = email_search_mail_on_server(account_id, mailbox_id, search_filter, search_filter_count, &handle)) != EMAIL_ERROR_NONE) {
2133 testapp_print("email_search_mail_on_server failed [%d]", err_code);
2136 testapp_print(" >>> testapp_test_search_mail_on_server : END \n");
2140 static gboolean testapp_test_add_mail_to_search_result_box()
2145 int attachment_count = 0;
2146 int err = EMAIL_ERROR_NONE;
2147 char arg[50] = { 0 , };
2148 char *body_file_path = MAIL_TEMP_BODY;
2149 email_mailbox_t *mailbox_data = NULL;
2150 email_mail_data_t *test_mail_data = NULL;
2151 email_attachment_data_t *attachment_data = NULL;
2152 email_meeting_request_t *meeting_req = NULL;
2153 FILE *body_file = NULL;
2155 testapp_print("\n > Enter account id : ");
2156 if (0 >= scanf("%d", &account_id))
2157 testapp_print("Invalid input. ");
2159 email_get_mailbox_by_mailbox_type(account_id, EMAIL_MAILBOX_TYPE_SEARCH_RESULT, &mailbox_data);
2161 test_mail_data = malloc(sizeof(email_mail_data_t));
2162 memset(test_mail_data, 0x00, sizeof(email_mail_data_t));
2164 testapp_print("\n From EAS? [0/1]> ");
2165 if (0 >= scanf("%d", &from_eas))
2166 testapp_print("Invalid input. ");
2168 test_mail_data->account_id = account_id;
2169 test_mail_data->save_status = 1;
2170 test_mail_data->body_download_status = 1;
2171 test_mail_data->flags_seen_field = 1;
2172 test_mail_data->file_path_plain = strdup(body_file_path);
2173 test_mail_data->mailbox_id = mailbox_data->mailbox_id;
2174 test_mail_data->mailbox_type = mailbox_data->mailbox_type;
2175 test_mail_data->full_address_from = strdup("<test1@test.com>");
2176 test_mail_data->full_address_to = strdup("<test2@test.com>");
2177 test_mail_data->full_address_cc = strdup("<test3@test.com>");
2178 test_mail_data->full_address_bcc = strdup("<test4@test.com>");
2179 test_mail_data->subject = strdup("Into search result mailbox");
2180 test_mail_data->remaining_resend_times = 3;
2182 body_file = fopen(body_file_path, "w");
2184 for (i = 0; i < 500; i++)
2185 fprintf(body_file, "X2 X2 X2 X2 X2 X2 X2");
2189 testapp_print(" > Attach file? [0/1] : ");
2190 if (0 >= scanf("%d", &attachment_count))
2191 testapp_print("Invalid input. ");
2193 if (attachment_count) {
2194 memset(arg, 0x00, 50);
2195 testapp_print("\n > Enter attachment name : ");
2196 if (0 >= scanf("%s", arg))
2197 testapp_print("Invalid input. ");
2199 attachment_data = malloc(sizeof(email_attachment_data_t));
2201 attachment_data->attachment_name = strdup(arg);
2203 memset(arg, 0x00, 50);
2204 testapp_print("\n > Enter attachment absolute path : ");
2205 if (0 >= scanf("%s", arg))
2206 testapp_print("Invalid input. ");
2208 attachment_data->attachment_path = strdup(arg);
2209 attachment_data->save_status = 1;
2210 test_mail_data->attachment_count = attachment_count;
2213 testapp_print("\n > Meeting Request? [0: no, 1: yes(request from server), 2: yes(response from local)]");
2214 if (0 >= scanf("%d", (int *)&(test_mail_data->meeting_request_status)))
2215 testapp_print("Invalid input. ");
2217 if (test_mail_data->meeting_request_status == 1
2218 || test_mail_data->meeting_request_status == 2) {
2219 time_t current_time;
2220 /* dummy data for meeting request */
2221 meeting_req = malloc(sizeof(email_meeting_request_t));
2222 memset(meeting_req, 0x00, sizeof(email_meeting_request_t));
2224 meeting_req->meeting_response = 1;
2225 current_time = time(NULL);
2226 gmtime_r(¤t_time, &(meeting_req->start_time));
2227 gmtime_r(¤t_time, &(meeting_req->end_time));
2228 meeting_req->location = malloc(strlen("Seoul") + 1);
2229 memset(meeting_req->location, 0x00, strlen("Seoul") + 1);
2230 strcpy(meeting_req->location, "Seoul");
2231 strcpy(meeting_req->global_object_id, "abcdef12345");
2233 meeting_req->time_zone.offset_from_GMT = 9;
2234 strcpy(meeting_req->time_zone.standard_name, "STANDARD_NAME");
2235 gmtime_r(¤t_time, &(meeting_req->time_zone.standard_time_start_date));
2236 meeting_req->time_zone.standard_bias = 3;
2238 strcpy(meeting_req->time_zone.daylight_name, "DAYLIGHT_NAME");
2239 gmtime_r(¤t_time, &(meeting_req->time_zone.daylight_time_start_date));
2240 meeting_req->time_zone.daylight_bias = 7;
2244 if ((err = email_add_mail(test_mail_data, attachment_data, attachment_count, meeting_req, from_eas)) != EMAIL_ERROR_NONE)
2245 testapp_print("email_add_mail failed. [%d]\n", err);
2247 testapp_print("email_add_mail success.\n");
2249 testapp_print("saved mail id = [%d]\n", test_mail_data->mail_id);
2251 if (attachment_data)
2252 email_free_attachment_data(&attachment_data, attachment_count);
2255 email_free_meeting_request(&meeting_req, 1);
2257 email_free_mail_data(&test_mail_data, 1);
2258 email_free_mailbox(&mailbox_data, 1);
2263 static gboolean testapp_test_email_parse_mime_file()
2266 int attachment_count = 0;
2267 int output_attachment_count = 0;
2269 int err = EMAIL_ERROR_NONE;
2270 char eml_file_path[255] = {0, };
2271 struct tm *struct_time;
2273 email_mail_data_t *mail_data = NULL;
2274 email_attachment_data_t *mail_attachment_data = NULL;
2275 email_mail_data_t *output_mail_data = NULL;
2276 email_attachment_data_t *output_mail_attachment_data = NULL;
2278 testapp_print("Input eml file path : ");
2279 if (0 >= scanf("%s", eml_file_path))
2280 testapp_print("Invalid input. ");
2282 if ((err = email_parse_mime_file(eml_file_path, &mail_data, &mail_attachment_data, &attachment_count)) != EMAIL_ERROR_NONE) {
2283 testapp_print("email_parse_mime_file failed : [%d]\n", err);
2287 testapp_print("load success\n");
2289 struct_time = localtime(&(mail_data->date_time));
2291 testapp_print("%4d year", struct_time->tm_year +1900);
2292 testapp_print("%2d month(0-11)\n", struct_time->tm_mon + 1);
2293 testapp_print("%2d day(1-31)\n", struct_time->tm_mday);
2294 testapp_print("%2d wday\n", struct_time->tm_wday);
2295 testapp_print("%2d hour(0-23)\n", struct_time->tm_hour);
2296 testapp_print("%2d minutes(0-59)\n", struct_time->tm_min);
2297 testapp_print("%2d second(0-59)\n", struct_time->tm_sec);
2298 testapp_print("year day %3d\n", struct_time->tm_yday);
2300 testapp_print("Return-Path: %s\n", mail_data->full_address_return);
2301 testapp_print("To: %s\n", mail_data->full_address_to);
2302 testapp_print("Subject: %s\n", mail_data->subject);
2303 testapp_print("Priority: %d\n", mail_data->priority);
2304 testapp_print("From: %s\n", mail_data->full_address_from);
2305 testapp_print("Reply-To: %s\n", mail_data->full_address_reply);
2306 testapp_print("Sender: %s\n", mail_data->email_address_sender);
2307 testapp_print("Message-ID: %s\n", mail_data->message_id);
2308 testapp_print("attachment_count: %d\n", mail_data->attachment_count);
2309 testapp_print("SMIME type : %d\n", mail_data->smime_type);
2310 testapp_print("inline content count : %d\n", mail_data->inline_content_count);
2311 testapp_print("mail_size : %d\n", mail_data->mail_size);
2312 testapp_print("download_body_status : %d\n", mail_data->body_download_status);
2315 for (i = 0; i < attachment_count ; i++) {
2316 testapp_print("%d attachment\n", i);
2317 testapp_print("attachment_id: %d\n", mail_attachment_data[i].attachment_id);
2318 testapp_print("attachment_size: %d\n", mail_attachment_data[i].attachment_size);
2319 testapp_print("inline_attachment_status: %d\n", mail_attachment_data[i].inline_content_status);
2320 testapp_print("attachment_name: %s\n", mail_attachment_data[i].attachment_name);
2321 testapp_print("attachment_path: %s\n", mail_attachment_data[i].attachment_path);
2322 testapp_print("attachment_save_status: %d\n", mail_attachment_data[i].save_status);
2323 testapp_print("content_id: %s\n", mail_attachment_data[i].content_id);
2324 testapp_print("mailbox_id: %d\n", mail_attachment_data[i].mailbox_id);
2327 testapp_print("Success : Open eml file\n");
2329 if (mail_data->smime_type != EMAIL_SMIME_NONE) {
2330 if (mail_data->smime_type == EMAIL_SMIME_SIGNED || mail_data->smime_type == EMAIL_PGP_SIGNED) {
2331 if (!email_verify_signature_ex(mail_data, mail_attachment_data, attachment_count, &verify))
2332 testapp_print("email_verify_signature_ex failed\n");
2334 if ((err = email_get_decrypt_message_ex(mail_data,
2335 mail_attachment_data,
2338 &output_mail_attachment_data,
2339 &output_attachment_count,
2340 &verify)) != EMAIL_ERROR_NONE)
2341 testapp_print("email_get_decrypt_message_ex failed\n");
2344 testapp_print("verify : [%d]\n", verify);
2347 if ((err = email_delete_parsed_data(mail_data)) != EMAIL_ERROR_NONE) {
2348 testapp_print("email_delete_eml_data failed : [%d]\n", err);
2352 testapp_print("Success : email_delete_eml_data\n");
2355 email_free_mail_data(&mail_data, 1);
2357 testapp_print("Success : email_free_mail_data\n");
2359 if (mail_attachment_data)
2360 email_free_attachment_data(&mail_attachment_data, attachment_count);
2362 testapp_print("Success : email_free_attachment_data\n");
2368 static gboolean testapp_test_email_write_mime_file()
2370 int err = EMAIL_ERROR_NONE;
2372 int attachment_count = 0;
2373 char *file_path = NULL;
2374 email_mail_data_t *mail_data = NULL;
2375 email_attachment_data_t *mail_attachment_data = NULL;
2378 file_path = malloc(512);
2379 memset(file_path, 0x00, 512);
2381 testapp_print("Input mail id : ");
2382 if (0 >= scanf("%d", &mail_id))
2383 testapp_print("Invalid input. ");
2385 err = email_get_mail_data(mail_id, &mail_data);
2386 if (err != EMAIL_ERROR_NONE || mail_data == NULL) {
2387 testapp_print("email_get_mail_data failed : [%d]\n", err);
2392 err = email_get_attachment_data_list(mail_id, &mail_attachment_data, &attachment_count);
2393 if (err != EMAIL_ERROR_NONE) {
2394 testapp_print("email_get_attachment_data_list failed : [%d]\n", err);
2398 snprintf(file_path, 512, tzplatform_mkpath(TZ_SYS_DATA, "email/.email_data/tmp/%d_%8d.eml"), mail_id, (int)time(NULL));
2400 err = email_write_mime_file(mail_data, mail_attachment_data, attachment_count, &file_path);
2401 if (err != EMAIL_ERROR_NONE) {
2402 testapp_print("email_write_mime_file failed : [%d]\n", err);
2406 testapp_print("file path : [%s]\n", file_path);
2409 email_free_mail_data(&mail_data, 1);
2411 if (mail_attachment_data)
2412 email_free_attachment_data(&mail_attachment_data, attachment_count);
2420 static gboolean testapp_test_smime_verify_signature()
2424 int err = EMAIL_ERROR_NONE;
2426 testapp_print("input mail_id :");
2427 if (0 >= scanf("%d", &mail_id))
2428 testapp_print("Invalid input. ");
2430 err = email_verify_signature(mail_id, &verify);
2431 if (err != EMAIL_ERROR_NONE) {
2432 testapp_print("Failed Verify\n");
2436 testapp_print("verify value : [%d]\n", verify);
2440 static gboolean testapp_test_email_add_mail_with_multiple_recipient()
2444 int err = EMAIL_ERROR_NONE;
2445 // int smime_type = 0;
2446 int recipient_addresses_count = 0;
2447 char *recipient_addresses = NULL;
2448 char recipient_address[234] = { 0, };
2449 char from_address[300] = { 0 , };
2450 const char *body_file_path = MAIL_TEMP_BODY;
2451 email_account_t *account_data = NULL;
2452 email_mailbox_t *mailbox_data = NULL;
2453 email_mail_data_t *test_mail_data = NULL;
2456 testapp_print("\n > Enter account id : ");
2457 if (0 >= scanf("%d", &account_id))
2458 testapp_print("Invalid input. ");
2460 testapp_print("\n > Enter recipient address count : ");
2461 if (0 >= scanf("%d", &recipient_addresses_count))
2462 testapp_print("Invalid input. ");
2464 if (recipient_addresses_count < 1)
2467 recipient_addresses = malloc(sizeof(char) * 234 * recipient_addresses_count);
2469 for (i = 0; i < recipient_addresses_count; i++) {
2470 snprintf(recipient_address, 234, "\"mailtest%05d\" <mailtest%05d@a1234567890b1234567890.com>; ", i, i);
2471 strcat(recipient_addresses, recipient_address);
2474 email_get_account(account_id, GET_FULL_DATA_WITHOUT_PASSWORD, &account_data);
2476 email_get_mailbox_by_mailbox_type(account_id, EMAIL_MAILBOX_TYPE_OUTBOX, &mailbox_data);
2478 test_mail_data = malloc(sizeof(email_mail_data_t));
2479 memset(test_mail_data, 0x00, sizeof(email_mail_data_t));
2481 SNPRINTF(from_address, 300, "<%s>", account_data->user_email_address);
2483 test_mail_data->account_id = account_id;
2484 test_mail_data->save_status = EMAIL_MAIL_STATUS_SEND_DELAYED;
2485 test_mail_data->body_download_status = 1;
2486 test_mail_data->flags_seen_field = 1;
2487 test_mail_data->file_path_plain = strdup(body_file_path);
2488 test_mail_data->mailbox_id = mailbox_data->mailbox_id;
2489 test_mail_data->mailbox_type = mailbox_data->mailbox_type;
2490 test_mail_data->full_address_from = strdup(from_address);
2491 test_mail_data->full_address_to = recipient_addresses;
2492 test_mail_data->subject = strdup("Read receipt request from TIZEN");
2493 test_mail_data->remaining_resend_times = 3;
2494 test_mail_data->report_status = EMAIL_MAIL_REQUEST_DSN | EMAIL_MAIL_REQUEST_MDN;
2495 test_mail_data->smime_type = 0;
2497 body_file = fopen(body_file_path, "w");
2499 testapp_print("\n body_file [%p]\n", body_file);
2501 if (body_file == NULL) {
2502 testapp_print("\n fopen [%s]failed\n", body_file_path);
2506 for (i = 0; i < 100; i++)
2507 fprintf(body_file, "Mail sending Test. [%d]\n", i);
2513 if ((err = email_add_mail(test_mail_data, NULL, 0, NULL, 0)) != EMAIL_ERROR_NONE)
2514 testapp_print("email_add_mail failed. [%d]\n", err);
2516 testapp_print("email_add_mail success.\n");
2518 testapp_print("saved mail id = [%d]\n", test_mail_data->mail_id);
2520 email_free_mail_data(&test_mail_data, 1);
2521 email_free_mailbox(&mailbox_data, 1);
2522 email_free_account(&account_data, 1);
2527 static gboolean testapp_test_send_mails_every_x_minutes()
2529 int added_mail_id = 0;
2530 int err = EMAIL_ERROR_NONE;
2532 time_t time_to_send;
2536 int send_interval_in_minutes = 0;
2537 int number_of_mails = 0;
2538 char recipient_address[300] = { 0 , };
2539 char from_address[300] = { 0 , };
2540 char subject_form[1024] = { 0 , };
2541 const char *body_file_path = MAIL_TEMP_BODY;
2542 struct tm *time_to_send_tm;
2543 email_account_t *account_data = NULL;
2544 email_mailbox_t *mailbox_data = NULL;
2545 email_mail_data_t *test_mail_data = NULL;
2548 testapp_print("\n > Enter account id : ");
2549 if (0 >= scanf("%d", &account_id))
2550 testapp_print("Invalid input. ");
2552 testapp_print("\n > Enter recipient address : ");
2553 if (0 >= scanf("%s", recipient_address))
2554 testapp_print("Invalid input. ");
2556 testapp_print("\n > Enter number of mails: ");
2557 if (0 >= scanf("%d", &number_of_mails))
2558 testapp_print("Invalid input. ");
2560 testapp_print("\n > Enter send interval in minutes: ");
2561 if (0 >= scanf("%d", &send_interval_in_minutes))
2562 testapp_print("Invalid input. ");
2564 email_get_account(account_id, GET_FULL_DATA_WITHOUT_PASSWORD, &account_data);
2566 email_get_mailbox_by_mailbox_type(account_id, EMAIL_MAILBOX_TYPE_OUTBOX, &mailbox_data);
2568 test_mail_data = malloc(sizeof(email_mail_data_t));
2569 memset(test_mail_data, 0x00, sizeof(email_mail_data_t));
2571 SNPRINTF(from_address, 300, "<%s>", account_data->user_email_address);
2573 test_mail_data->account_id = account_id;
2574 test_mail_data->save_status = EMAIL_MAIL_STATUS_SEND_DELAYED;
2575 test_mail_data->body_download_status = 1;
2576 test_mail_data->flags_seen_field = 1;
2577 test_mail_data->file_path_plain = strdup(body_file_path);
2578 test_mail_data->mailbox_id = mailbox_data->mailbox_id;
2579 test_mail_data->mailbox_type = mailbox_data->mailbox_type;
2580 test_mail_data->full_address_from = strdup(from_address);
2581 test_mail_data->full_address_to = strdup(recipient_address);
2582 test_mail_data->remaining_resend_times = 3;
2583 test_mail_data->report_status = EMAIL_MAIL_REPORT_NONE;
2586 for (i = 0; i < number_of_mails; i++) {
2587 if (test_mail_data->subject)
2588 free(test_mail_data->subject);
2590 time(&time_to_send);
2591 time_to_send += (60 * send_interval_in_minutes) * (i + 1);
2592 time_to_send_tm = localtime(&time_to_send);
2594 strftime(subject_form, 1024, "[%H:%M] TEST.", time_to_send_tm);
2595 test_mail_data->subject = strdup(subject_form);
2597 body_file = fopen(body_file_path, "w");
2599 testapp_print("\n body_file [%p]\n", body_file);
2601 if (body_file == NULL) {
2602 testapp_print("\n fopen [%s]failed\n", body_file_path);
2606 for (j = 0; j < 100; j++)
2607 fprintf(body_file, "Mail sending Test. [%d]\n", j);
2612 if ((err = email_add_mail(test_mail_data, NULL, 0, NULL, 0)) != EMAIL_ERROR_NONE) {
2613 testapp_print("email_add_mail failed. [%d]\n", err);
2616 testapp_print("email_add_mail success.\n");
2617 added_mail_id = test_mail_data->mail_id;
2620 testapp_print("saved mail id = [%d]\n", added_mail_id);
2622 if (added_mail_id) {
2623 testapp_print("Calling email_schedule_sending_mail...\n");
2625 if (email_schedule_sending_mail(added_mail_id, time_to_send) < 0) {
2626 testapp_print("email_schedule_sending_mail failed[%d]\n", err);
2628 testapp_print("Start sending. handle[%d]\n", handle);
2633 email_free_mail_data(&test_mail_data, 1);
2634 email_free_mailbox(&mailbox_data, 1);
2635 email_free_account(&account_data, 1);
2640 /* internal functions */
2641 static gboolean testapp_test_interpret_command(int menu_number)
2643 gboolean go_to_loop = TRUE;
2645 switch (menu_number) {
2647 testapp_test_get_mails();
2650 testapp_test_mail_send(NULL);
2653 testapp_test_get_mail_list_ex();
2656 testapp_test_add_attachment();
2659 testapp_test_set_deleted_flag();
2662 testapp_test_expunge_mails_deleted_flagged();
2665 testapp_test_send_read_receipt();
2668 testapp_test_delete_attachment();
2671 testapp_test_count();
2674 testapp_test_move_mails_to_mailbox_of_another_account();
2677 testapp_test_send_mail_with_downloading_attachment_of_original_mail();
2680 testapp_test_get_mail_data();
2683 testapp_test_schedule_sending_mail();
2686 testapp_test_delete();
2689 testapp_test_update_mail_attribute();
2692 testapp_test_download_body();
2695 testapp_test_download_attachment();
2698 testapp_test_get_attachment_data_list();
2701 testapp_test_get_meeting_request();
2704 testapp_test_delete_all();
2707 testapp_test_move();
2710 testapp_test_retry_send();
2713 testapp_test_get_attachment_data();
2716 testapp_test_move_all_mails_to_mailbox();
2719 testapp_test_get_totaldiskusage();
2722 testapp_test_address_format_check_test();
2725 testapp_test_get_max_mail_count();
2728 testapp_test_db_test();
2731 testapp_test_send_cancel();
2734 testapp_test_cancel_download_body();
2737 testapp_test_get_mail_list_for_thread_view();
2740 testapp_test_test_get_thread_information();
2743 testapp_test_get_mail_list();
2746 testapp_test_get_address_info_list();
2749 testapp_test_set_flags_field();
2752 testapp_test_add_mail(NULL);
2755 testapp_test_update_mail();
2758 testapp_test_search_mail_on_server();
2761 testapp_test_add_mail_to_search_result_box();
2764 testapp_test_email_parse_mime_file();
2767 testapp_test_email_write_mime_file();
2770 testapp_test_smime_verify_signature();
2773 testapp_test_email_add_mail_with_multiple_recipient();
2776 testapp_test_send_mails_every_x_minutes();
2788 void testapp_mail_main()
2790 gboolean go_to_loop = TRUE;
2791 int menu_number = 0;
2793 while (go_to_loop) {
2794 testapp_show_menu(EMAIL_MAIL_MENU);
2795 testapp_show_prompt(EMAIL_MAIL_MENU);
2797 if (0 >= scanf("%d", &menu_number))
2798 testapp_print("Invalid input");
2800 go_to_loop = testapp_test_interpret_command(menu_number);