最好能给我一个作好的类。万分感谢。
我的电子邮件:[email protected]

解决方案 »

  1.   

    支持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)));
    }