使用libspopc函式庫實現POP訪問
阿新 • • 發佈:2019-02-05
#include <libspopc.h> #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct _emaillist emaillist; struct _emaillist { // 定義結構體,用於儲存郵件資訊 int size; int sig; char head[500]; char msg[65536]; }; int mail() { popsession* mysession; // 定義libspopc會話 int error; char servername[200]; // 用於儲存pop3伺服器地址 char user[20]; // 用於儲存用於名 char pass[20]; // 用於儲存密碼 int last, total, i, j; puts("請輸入pop3伺服器地址:"); scanf("%s", servername); puts("請輸入使用者名稱:"); scanf("%s", user); puts("請輸入密碼:"); scanf("%s", pass); libspopc_init(); // 初始化libspopc error = popbegin(servername, user, pass, &mysession); // 開啟pop連線 if (error != 0) { puts("無法開啟郵箱"); return 1; } last = mysession -> last; // 獲取最後一個郵件的編碼 total = mysession -> num; // 獲取郵件總數 emaillist *els = malloc(sizeof(emaillist) * total); // 動態分配記憶體存放郵件內容 for(i = 1; i <= last; i++){ (els + i - 1) -> size = popmsgsize(mysession,i) ; // 獲取郵件大小 (els + i - 1) -> sig = popmsguid(mysession,i); // 獲取郵件編號 strncpy((els + i - 1) -> head, popgethead(mysession,i), 499); // 獲取郵件標題 strncpy((els + i - 1) -> msg, popgetmsg(mysession,i), 65535); // 獲取郵件內容 *((els + i - 1) -> head) +500) = '\0'; *((els + i - 1) -> msg) + 65536) = '\0'; popdelmsg(mysession,i); // 在郵箱中刪除郵件 } popend(mysession); // 結束會話 libspopc_clean(); // 終止libspopc for (i = 0; i <= last - 1; i++) { printf("%d:%30s %dB", (els + i) -> sig, (els + i) -> head, (int) (els + i) -> size / 1024 ); // 顯示郵件概要資訊 while(1) { puts("請輸入要檢視郵件的編碼,輸入“-1”退出"); scanf("%d", &j); if (j == -1) break; else { for(i = 0; i <= last - 1; i++) { if ((els + i) -> sig == j); puts((els + i) -> msg); // 輸出郵件內容 } } } free(els); return 0; }