请问发送支持smtp认证的电子邮件?谢谢 最好能给我一个作好的类。万分感谢。我的电子邮件:[email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 支持SMTP认证的电子邮件在发送用户名和密码时需对他们进行编码:#include <stdio.h>#include <stdlib.h>#include <string.h>char* _stdcall Base64Encode(const char *str,int length){ //int length = strlen(str);static char base64_table[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' ,'\0'};static char base64_pad = '='; const char *current = ( const char*)str; int i = 0; char *result = ( char *)malloc(((length + 3 - length % 3) * 4 / 3 + 1) * sizeof(char)); while (length > 2) { /* keep going until we have less than 24 bits */ result[i++] = base64_table[current[0] >> 2];result[i++] = base64_table[((current[0] & 0x03) << 4) + (current[1] >> 4)]; result[i++] = base64_table[((current[1] & 0x0f) << 2) + (current[2] >> 6)]; result[i++] = base64_table[current[2] & 0x3f]; current += 3; length -= 3; /* we just handle 3 octets of data */ } /* now deal with the tail end of things */ if (length != 0) { result[i++] = base64_table[current[0] >> 2]; if (length > 1) { result[i++] = base64_table[((current[0] & 0x03 ) << 4) + (current[1] >> 4)]; result[i++] = base64_table[(current[1] & 0x0f) << 2]; result[i++] = base64_pad; } else { result[i++] = base64_table[(current[0] & 0x03) << 4]; result[i++] = base64_pad; result[i++] = base64_pad; } } result[i] = '\0'; // printf("%s\n",result); return result; } /*char* Base64Decode(const char* str){ char* current = str; char *result = (char*)malloc(strlen(str)/4*3 * sizeof(char));}*/void main(int argc,char **argv){ char *user = (char*)malloc(strlen(argv[1])*sizeof(char)+1); char *pass = (char*)malloc(strlen(argv[2])*sizeof(char)+1); strcpy(user,argv[1]); strcpy(pass,argv[2]); printf("user: %s\n",Base64Encode(user,strlen(user))); printf("pass: %s\n",Base64Encode(pass,strlen(pass)));} 怎么实现登录微博? 这张图让我蛋疼,兔子党表示压力很大 问有一个API VirtualQuery函数 怎样连接网络上的MYSQL数据库? 遇到一个大麻烦,CArray的手动析构问题,请高手帮忙 关于splitter的问题 管道问题,求解!大家快来帮忙! 修改应用程序标题? 关于ShellExecute的问题 关于ActiveX文档服务器(在线讨论) 救急啊!哪位大侠有在同一PC防止程序起动两次(即运行两个)的代码.多谢! 新手的问题
#include <stdlib.h>
#include <string.h>char* _stdcall Base64Encode(const char *str,int length)
{
//int length = strlen(str);
static char base64_table[] =
{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' ,'\0'
};
static char base64_pad = '=';
const char *current = ( const char*)str;
int i = 0;
char *result = ( char *)malloc(((length + 3 - length % 3) * 4 / 3 + 1) * sizeof(char));
while (length > 2) { /* keep going until we have less than 24 bits */
result[i++] = base64_table[current[0] >> 2];
result[i++] = base64_table[((current[0] & 0x03) << 4) + (current[1] >> 4)];
result[i++] = base64_table[((current[1] & 0x0f) << 2) + (current[2] >> 6)];
result[i++] = base64_table[current[2] & 0x3f];
current += 3;
length -= 3; /* we just handle 3 octets of data */
}
/* now deal with the tail end of things */
if (length != 0) {
result[i++] = base64_table[current[0] >> 2];
if (length > 1) {
result[i++] = base64_table[((current[0] & 0x03 ) << 4) + (current[1] >> 4)];
result[i++] = base64_table[(current[1] & 0x0f) << 2]; result[i++] = base64_pad;
}
else {
result[i++] = base64_table[(current[0] & 0x03) << 4];
result[i++] = base64_pad;
result[i++] = base64_pad;
}
}
result[i] = '\0'; // printf("%s\n",result);
return result;
} /*
char* Base64Decode(const char* str)
{
char* current = str;
char *result = (char*)malloc(strlen(str)/4*3 * sizeof(char));
}
*/void main(int argc,char **argv)
{
char *user = (char*)malloc(strlen(argv[1])*sizeof(char)+1);
char *pass = (char*)malloc(strlen(argv[2])*sizeof(char)+1);
strcpy(user,argv[1]);
strcpy(pass,argv[2]);
printf("user: %s\n",Base64Encode(user,strlen(user)));
printf("pass: %s\n",Base64Encode(pass,strlen(pass)));
}