c语言pop3
⑴ c++语言pop3协议得到的邮件内容怎么解析
邮件内容协议分成很多个段落
首先是日期 Date: RFC 5322 日期格式
然后是收件人发件人段,“To:” 和 "From",以及抄送 "Cc:“ 和 "Bcc“
随后是“Message-ID: “,用于服务器在消息流通中不至于重复发送和存储,识别邮件的唯一性。
最后一段比较关键,格式类似于这样:
MIME-Version: 1.0 Content-type: multipart/alternative; boundary="(boundary)"
意思是表示邮件采用MIME内容编码,可以是多个组成部分,由边界线boundary划分为多个数据区。数据区之间的内容可以是html或者普通文本(参考下列代码)关键是所有文本内容都是用 base64编码重新编排过,所以要用decode_base64解开才能读取。
f!text.isEmpty{
body+="--(boundary) Content-Type:text/plain;charset=UTF-8;format=flowed (text) "
}
if!content.isEmpty{
body+="--(boundary) Content-Type:text/html;charset=UTF-8 (content) "
}
直接去解析是比较费劲的,因为其实整个编码都是采用了http传输协议的 mime 方式。建议用现成的开源代码去读去,比如CHTTPParser,速度快,效率高,都已经通过几十年检验了的成熟代码。
⑵ 用c语言写一个邮件收发程序,不知道该怎么做!求大神指导!
你可以用smtp协议来发送邮件
用pop3来接收邮件
具体发送的代码全是api函数,直接调用就行了
想加界面的话用c++的mfc或者调用api建窗口
网络搜都有的
⑶ linux下的一个pop3接收邮件的程序,求如何写实现下载和保存到本地的功能(用c)
这个不太复杂,简单点说,
0,您得懂点C。
1,您得懂一点LINUX网络编程,会创建个TCP套接字,能连上remote server,并收发数据
2,您得知道点POP3协议的往来数据交互的格式,比如什么命令登录POP3,什么命令下载邮件什么的
3,您得知道点打开本地文件并往里头写数据的方法
4,您得知道点MailDir 或者 MailBox 格式
差不多就这些了,网络一下或者google一下。
⑷ c语言中有发送邮件的函数吗
没有,需要第三方库函数。
⑸ 一简单的C语言程序题,求纠错。
我给您修改了一下。
#include"stdio.h"
void main()
{
char country1[10]="China",country2[10]="Iceland",country3[10]="India",country4[15]="Madagascar",country5[10]="Maldive";
double area[5],pop[5],GDP[5];
area[0]=960.00;
area[1]=10.30;
area[2]=297.47;
area[3]=62.70;
area[4]=0.0298;
pop[0]=129500.00;
pop[1]=27.50;
pop[2]=97000.00;
pop[3]=1635.00;
pop[4]=27.80;
GDP[0]=1080.00;
GDP[1]=8.20;
GDP[2]=264.80;
GDP[3]=3.60;
GDP[4]=0.23;
printf("-------------------------------------------------------\n");
printf("COUNTRY AREA(10K KM2) POP(10K) GDP(BILLION $\n");
printf("-------------------------------------------------------\n");
printf("% -13.10s %15.2f %10.2f %14.2f\n",country1,area[0],pop[0],GDP[0]);
printf("% -13.10s %15.2f %10.2f %14.2f\n",country2,area[1],pop[1],GDP[1]);
printf("% -13.10s %15.2f %10.2f %14.2f\n",country3,area[2],pop[2],GDP[2]);
printf("% -13.10s %15.2f %10.2f %14.2f\n",country4,area[3],pop[3],GDP[3]);
printf("% -13.10s %15.2f %10.2f %14.2f\n",country5,area[4],pop[4],GDP[4]);
printf("-------------------------------------------------------\n");
}
1.country 部分赋值重复,我把下面那一部分删掉了。
2.定义字符串变量时,要给变量后面加上长度,该长度为该字符串可容纳的最多字符数(最好大于)。
例如:
char country1[10]="China",
country为变量名,[10]为变量长度,表示country变量可以容纳10个字符。
3.由于不需要计算,没必要使用float型数,只需要用double。
4.定义变量area,pop,GDP时可使用数组,简化定义部分。(数组的第一个数是a [0])
希望对您有帮助!
⑹ 请问学习C语言哪些方面的内容可以编写最简易的收发邮件的客户端(smtp/pop3协议)
学习网络通讯协议 ,还有一些基础的编程知识,socket通讯 ,了解协议的初始化,
⑺ ubuntu系统如何抓pop3数据包
VI编辑器 #vi /etc/network/interface 如果你是单块网卡在安装系统时自动获取会是如下(回环地址省略) auto eth0 iface eth0 inet dhcp 此时你要修改为指定IP时需要改成如下 auto eth0 iface eth0 inet static address 192.168.1.100 netmas
⑻ C语言常用词汇及函数有那些
常用词汇:
1、short:修饰int,短整型数据,可省略被修饰的int。
2、long:修饰int,长整型数据,可省略被修饰的int。
3、long long:修饰int,超长整型数据,可省略被修饰的int。
4、signed:修饰整型数据,有符号数据类型。
5、unsigned:修饰整型数据,无符号数据类型。
6、restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。
7、return:用在函数体中,返回特定值(如果是void类型,则不返回函数值)。
8、continue:结束当前循环,开始下一轮循环。
9、break:跳出当前循环或switch结构。
10、goto:无条件跳转语句。
11、if:条件语句,后面不需要放分号。
12、else:条件语句否定分支(与if连用)。
13、switch:开关语句(多重分支语句)。
14、case:开关语句中的分支标记,与switch连用。
15、default:开关语句中的“其他”分支,可选。
常用函数:
1、int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z'),返回非0值,否则返回0。
2、int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0。
3、int abs(int i) 返回整型参数i的绝对值。
4、double cabs(struct complex znum) 返回复数znum的绝对值。
5、double fabs(double x) 返回双精度参数x的绝对值。
6、long labs(long n) 返回长整型参数n的绝对值。
⑼ 如果用 c# .net 使用 pop3 协议编写一个接收邮件的web程序
从技术上讲,接口是一组包含了函数型方法的数据结构。通过这组数据结构,客户代码可以调用组件对象的功能。
定义接口的一般形式为:
[attributes] [modifiers] interface identifier [:base-list] {interface-body}[;]
说明:
· attributes(可选):附加的定义性信息。
· modifiers(可选):允许使用的修饰符有new和四个访问修饰符。分别是:new、public、protected、internal、private。在一个接口定义中同一修饰符不允许出现多次,new修饰符只能出现在嵌套接口中,表示覆盖了继承而来的同名成员。The public, protected, internal, and private修饰符定义了对接口的访问权限。
· 指示器和事件。
· identifier:接口名称。
· base-list(可选):包含一个或多个显式基接口的列表,接口间由逗号分隔。
· interface-body:对接口成员的定义。
· 接口可以是命名空间或类的成员,并且可以包含下列成员的签名: 方法、属性、索引器 。
· 一个接口可从一个或多个基接口继承。
接口这个概念在C#和Java中非常相似。接口的关键词是interface,一个接口可以扩展一个或者多个其他接口。按照惯例,接口的名字以大写字母"I"开头。下面的代码是C#接口的一个例子,它与Java中的接口完全一样:
interface IShape {
void Draw ( ) ;
}
如果你从两个或者两个以上的接口派生,父接口的名字列表用逗号分隔,如下面的代码所示:
interface INewInterface: IParent1, IParent2 { }
然而,与Java不同,C#中的接口不能包含域(Field)。另外还要注意,在C#中,接口内的所有方法默认都是公用方法。在Java中,方法定义可以带有public修饰符(即使这并非必要),但在C#中,显式为接口的方法指定public修饰符是非法的。例如,下面的C#接口将产生一个编译错误。
interface IShape { public void Draw( ) ; }
下面的例子定义了一个名为IControl 的接口,接口中包含一个成员方法Paint:
interface IControl {
void Paint( ) ;
}
在下例中,接口 IInterface从两个基接口 IBase1 和 IBase2 继承:
interface IInterface: IBase1, IBase2 {
void Method1( ) ;
void Method2( ) ;
}
接口可由类实现。实现的接口的标识符出现在类的基列表中。例如:
class Class1: Iface1, Iface2 {
// class 成员。
}
类的基列表同时包含基类和接口时,列表中首先出现的是基类。例如:
class ClassA: BaseClass, Iface1, Iface2 {
// class成员。
}
以下的代码段定义接口IFace,它只有一个方法:
interface IFace {
void ShowMyFace( ) ;
}
不能从这个定义实例化一个对象,但可以从它派生一个类。因此,该类必须实现ShowMyFace抽象方法:
class CFace:IFace
{
public void ShowMyFace( ) {
Console.WriteLine(" implementation " ) ;
}
}
基接口
一个接口可以从零或多个接口继承,那些被称为这个接口的显式基接口。当一个接口有比零多的显式基接口时,那么在接口的定义中的形式为,接口标识符后面跟着由一个冒号":"和一个用逗号","分开的基接口标识符列表。
接口基:
接口类型列表说明:
· 一个接口的显式基接口必须至少同接口本身一样可访问。例如,在一个公共接口的基接口中指定一个私有或内部的接口是错误的。
· 一个接口直接或间接地从它自己继承是错误的。
· 接口的基接口都是显式基接口,并且是它们的基接口。换句话说,基接口的集合完全由显式基接口和它们的显式基接口等等组成。在下面的例子中
interface IControl {
void Paint( ) ;
}
interface ITextBox: IControl {
void SetText(string text) ;
}
interface IListBox: IControl {
void SetItems(string[] items) ;
}
interface IComboBox: ITextBox, IListBox { }
IComboBox 的基接口是IControl, ITextBox, 和 IlistBox。
· 一个接口继承它的基接口的所有成员。换句话说,上面的接口IComboBox就像Paint一样继承成员SetText 和 SetItems。
· 一个实现了接口的类或结构也隐含地实现了所有接口的基接口。
接口主体
一个接口的接口主体定义接口的成员。
interface-body:
{ interface-member-declarationsopt }
⑽ 如何在电脑上安装C语言。
1、下载好一个安装包,并解压。