Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sdk:scripts:remote-mail [2015/05/05 17:04] (current)
Line 1: Line 1:
 +====== SDK Script remote-mail.are ======
 +<code c remote-mail.are>​
 +/* DESC: This script reads and sends mails from a remote IMAP/​POP3/​SMTP server
 + * Copyright (C) 2014 NetModule AG, Switzerland
 + */
 +
 +SERVER = "​mail.example.com";​
 +IMAPURL = strcat("​imap://",​ SERVER);
 +SMTPURL = strcat("​smtp://",​ SERVER);
 +USR = "​user";​
 +PWD = "​password";​
 +KEEP = 1;
 +AUTORESPOND = 0;
 +RESPONDTO = "​test@example.com";​
 +
 +
 +cnt = nb_mail_list(USR,​ PWD, IMAPURL);
 +if (cnt < 0) {
 +    printf("​ERROR:​ unable to list mail on %s\n", SERVER);
 +    exit(1);
 +}
 +
 +printf("​saw %d mails on %s\n\n",​ cnt, SERVER);
 +
 +for (i = 0; i < cnt; i++) {
 +    mail = nb_mail_fetch(USR,​ PWD, IMAPURL, i);
 +    if (!mail) {
 +        printf("​ERROR:​ unable to retrieve mail #​%d\n",​ i);
 +        continue;
 +    } 
 +
 +    /* dump mail */
 +    printf("​--- mail #%d ---\n",​ i);
 +    printf("​From:​ %s\n", struct_get(mail,​ "​from"​));​
 +    printf("​To:​ %s\n", struct_get(mail,​ "​to"​));​
 +    printf("​Subject:​ %s\n", struct_get(mail,​ "​subject"​));​
 +    printf("​Date:​ %s\n", struct_get(mail,​ "​date"​));​
 +    printf("​\n%s\n---\n",​ struct_get(mail,​ "​body"​));​
 +
 +    ​
 +    if (AUTORESPOND) {
 +        /* auto-respond to sender */
 +        m = strstr(struct_get(mail,​ "​from"​),​ RESPONDTO);
 +        if (!is_void(m)) {
 +            printf("​sending response to '​%s'​\n",​ struct_get(mail,​ "​from"​));​
 +
 +            response = mkstruct("​from",​ struct_get(mail,​ "​to"​),​
 +                                "​to",​ struct_get(mail,​ "​from"​),​
 +                                "​subject",​ strcat("​Re:​ ", struct_get(mail,​ "​subject"​)),​
 +                                "​body",​ "got your mail"​);​
 +
 +            if (nb_mail_send(USR,​ PWD, SMTPURL, response) != 0) {
 +                printf("​ERROR:​ unable to send response for mail #​%d\n",​ i);
 +            } else {
 +                printf("​responded to mail #​%d\n"​);​
 +            }
 +        }
 +    }
 +
 +    if (!KEEP) {
 +        if (nb_mail_delete(USR,​ PWD, IMAPURL, i) != 0) {
 +            printf("​ERROR:​ unable to delete mail #​%d\n",​ i);
 +        } else {
 +            printf("​deleted mail #​%d\n"​);​
 +        }
 +    }
 +}
 +
 +exit(0);
 +</​code>​