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、下載好一個安裝包,並解壓。