資源簡介
c語言實現的發送郵件

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
static?int?ZJF_Mail_int2char_FUN(int?a)
{
????if(a?<=?25)
????{
????????return?‘A‘+(a-0);
????}
else?if((a?>?25)&&(a?<=?51))
{
????return?‘a‘+(a-26);
}
else?if((a?>?51)&&(a?61))
{
????return?‘0‘+(a-52);
}
else?if(a?==?‘=‘)
{
????return?a;
}
else?if(a?==?62)
{
????return?‘+‘;
}
else?if(a?==?63)
{
????return?‘/‘;
}
????return?0;
}
static?int?ZJF_Mail_LittleToBig_FUN(char?*str1int?len)
{
????int?i????=?0;
????int?temp?=?0;
????for(i?=?0;?i?????{
????????temp?|=?(str1[i]?<(len-i-1)*8);????????
????}
//printf(“%#x?\n“temp);?
????return?temp;
}
static?int?ZJF_Mail_base64Encod_FUN(char?*?datachar?*outputint?lenint?*oputlen)
{
int?ijk;
????char?strtemp[4]?=?{?0?};??/*每次拷貝三個字節出來,存儲*/
????int?temp?=?0;
char?*?pbuffer?=?(char?*?)malloc(len/3*4+4);
?
for(i?=?0j?=?0;?i? {????????????
????????memcpy(strtempdata+3*i3);????
????????temp?=?ZJF_Mail_LittleToBig_FUN(strtemp3);
??????????????????????????????
pbuffer[j++]?=?(temp>>18)&0x3f;???//0x3f??111111
pbuffer[j++]?=?(temp>>12)&0x3f;??
pbuffer[j++]?=?(temp>>6)&0x3f;???
pbuffer[j++]?=?(temp>>0)&0x3f;???
if(j?==?75)
{
????pbuffer[j++]?=?‘\n‘;
}
}
????????
if(len%3?==?1)
{
????????memcpy(strtempdata+3*i1);
temp?=?(int)strtemp[0];
????pbuffer[j++]?=?temp>>2;
????pbuffer[j++]?=?(temp&0x03)<<4;
????pbuffer[j++]?=?‘=‘;
????pbuffer[j++]?=?‘=‘;
}
????else?if(len%3?==?2)
{
????????memcpy(strtempdata+3*i2);
????????temp?=?ZJF_Mail_LittleToBig_FUN(strtemp2);
????pbuffer[j++]?=?temp>>10;
????pbuffer[j++]?=?(temp>>4)&0x3f;
????pbuffer[j++]?=?(temp<<2)&0x3f;
????pbuffer[j++]?=?‘=‘;
}
????pbuffer[j++]?=?‘\0‘;
for(i?=?0;i?????{
????????//printf(“%c?“ZJF_Mail_int2char_FUN(pbuffer[i]));
output[i]=?ZJF_Mail_int2char_FUN(pbuffer[i]);
????}
printf(“\n“);
????*oputlen?=?j-1;?
//printf(“data?len?=?%d?\n“j-1);
if(pbuffer?!=?NULL)
{
????free(pbuffer);
pbuffer?=?NULL;
}
????return?0;
}
#define?IP_ADDR??????(“smtp.sina.com“)
static?ZJF_Mail_GetPeerAddrInfo_FUN(struct?sockaddr_in?*PeerAddr)
{
????struct?hostent?*Addr;
char?ip[32]?=?{?0?};
Addr?=?gethostbyname(IP_ADDR);
if(NULL?==?Addr)
{
????perror(“err:“);
????printf(“get?ip?info?err?!!!?\n“);
return?-1;
}
????memset(PeerAddr?0?sizeof(struct?sockaddr_in));??
????PeerAddr->sin_family?=?AF_INET;
????PeerAddr->sin_port???=?htons(25);
inet_ntop(Addr->h_addrtype?Addr->h_addr_list[0]?ip?sizeof(ip));
PeerAddr->sin_addr.s_addr?=?inet_addr(ip);
printf(“ip:%s?len:?%d?\n“ipstrlen(ip));
????return?0;
}
static?int?ZJF_Mail_OpenSocket_FUN(struct?sockaddr?*addr)
{
????int
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????12607??2016-08-11?10:54??Email\a.out
?????文件?????167286??2016-08-09?17:28??Email\ba
?????文件???????8553??2016-08-11?10:56??Email\mail.c
?????目錄??????????0??2016-08-11?10:54??Email
-----------?---------??----------?-----??----
???????????????188446????????????????????4
- 上一篇:循環碼的C++實現
- 下一篇:記賬軟件源代碼——自己編的C++實現
評論
共有 條評論