foxmail 批量导入收件人邮箱信息

问题产生的背景:
用foxmail发邮件时,填写收件人,每次输入别人的邮箱时要换成英文输入,有时还要得判断是不是我想找的那个人,确实麻烦。怎样将一份别人发过来的邮件中的收件人信息一次性全导入foxmail呢?
foxmail邮箱的联系人可用csv文件批量导入。

首先,在foxmai收件箱中找到文员的来信(他们通常会给很多人发送邮件),然后将联系人复制到一份txt文件中。比如:


copy:



然后处理这份 cin.txt数据文件。
在vim编辑器中处理它,变成有规律的多行数据记录文件。
利用regular expression替换功能:
%s/<\([a-z.@]*\)>, /^I\1^M/g

黎    li@.com.cn
刘    liu@.com.cn
吴  wu@.com.cn
李  li@.com.cn
袁    yuan@.com.cn
赖  lai@.com.cn
胡  hu@.com.cn
陈    chen@.com.cn
魏    wei@.com.cn
王  wang@.com.cn
杨    yang@.com.cn
周    zhou@.com.cn
池  chi@.com.cn
毛  mao@.com.cn
叶  ye@.com.cn
叶  ye@.com.cn
周    zhou@.com.cn
赵    zhao@.com.cn
杨    yang@.com.cn.com.cn>

用正则表达式处理了大部分数据,最后一行手动解决,除去< , >

xls文件

然后书写c代码生成xls文件。
在qt creator中输入以下代码

#include 
#include 

int main(){
    FILE *fp = fopen("cin.txt","r");
    FILE *res = fopen("people.xls","w");
    char *buff = (char *)malloc(100);
    if(fp == NULL){
        printf("cin.txt fopen failed.\n");
        goto end;
    }
    if(res == NULL){
        printf("xls fopen failed.\n");
        goto end;
    }
    fprintf(res,"姓名\t电子邮件地址\n");
    while(fscanf(fp,"%s",buff) != EOF){
        fprintf(res,"%s\t",buff);
        fscanf(fp,"%s",buff);
        fprintf(res,"%s\n",buff);
    }
end:
    fclose(fp);
    fclose(res);
    free(buff);
    return 0;
}

office Excel一般是以ANSI编码查看文件的
我们的qt creator是UTF-8编码的。
所以qt中的汉字输出到文件中可能产生乱码。
为了保证字符编码的统一,可以约定cin.txt,people.xls,main.c的编码都为ANSI编码。

记事本:
另存为 - 改变编码 - ANSI。
qt上修改:
编辑 - set encoding - GBK

然后编译运行即可,得到的xls文件用EXCEL打开,然后另存为csv即可。

csv文件

我们可以直接修改C程序生成CSV文件。 xls文件单元项是以\t为分隔符的,而CSV文件是以,为分隔符的。
所以新的代码为

#include 
#include 

int main(){
    FILE *fp = fopen("cin.txt","r");
    FILE *res = fopen("people.csv","w");
    char *buff = (char *)malloc(100);
    if(fp == NULL){
        printf("cin.txt fopen failed.\n");
        goto end;
    }
    if(res == NULL){
        printf("xls fopen failed.\n");
        goto end;
    }
    fprintf(res,"姓名,电子邮件地址\n");
    while(fscanf(fp,"%s",buff) != EOF){
        fprintf(res,"%s,",buff);
        fscanf(fp,"%s",buff);
        fprintf(res,"%s\n",buff);
    }
end:
    fclose(fp);
    fclose(res);
    free(buff);
    return 0;
}

在foxmail中点击左下角的联系人图标,然后选择右上角的目录图标,进一步操作:导入 - CSV文件 - 选择附件。
有了这些信息,我们直接输入中文,查找邮件联系人会很方便。

你可能感兴趣的:(C,C++学习笔记,qt)