no way to compare when less than two revisions

Differences

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


Last revision
sdk:scripts:remote-mail [2015/05/05 15:04] – external edit 127.0.0.1
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>