我试图弄清楚如何在 Win7 上的 C++ 中动态更改 MIME 标头(将通过 SMTP 发送)内部的信息。
下面是我正在使用的 MIME 标头的基本布局。
char *payload_text[]={
"Date: Sun, 14 Oct 2012 12:59:19 +1000\n",
"To: " TO "\n",
"From: " FROM "\n",
"Cc: " CC "\n",
"Message-ID: <sender@greenearth.com>\n",
"Subject: This is a test with the payload as char\n",
"\n",
"Here is where the info goes\n",
"\n ",
NULL
};
我想创建一个可以更改的函数,例如,调用头文件时的主题,并返回一个字符数组(据我所知)。这是我正在尝试的方法。
char *part1[]={
"Date: Sun, 14 Oct 2012 12:59:19 +1000\n",
"To: " TO "\n",
"From: " FROM "\n",
"Cc: " CC "\n",
"Message-ID: <sender@greenearth.com>\n",
"Subject: This is a test with the payload as char\n",
"\n"
};
char *body [] = { "Test information.",
"More test info" };
char *full_payload [ strlen(*part1) + strlen(*body) + 1 ];
strcat( *full_payload, *part1 );
strcat( *full_payload, *body );
cout << *full_payload;
查看有效负载时,仅显示两个部分的第一个字符串
控制台输出:
[several junk bytes]Date: Sun, 14 Oct 2012 12:59:19 +1000
Test information.
而应该显示一个完整的 MIME 标头。
我不明白为什么这不起作用。我相信问题可能在于我不了解 {} 在 C++ 中的行为,也找不到属于这种上下文的教程/示例代码(大多数似乎只解决没有多个字符串用逗号分隔的 char 数组弯曲括号内)。
简而言之,如何将字符串附加到包含在曲括号中的现有字符串字符数组的末尾?
感谢您的阅读,我们会热情地接受建议。
跟进:
使用该函数创建 astd::string
然后将其转换为 aconst char *
它可以根据需要格式化 MIME 消息,但无法与我用于 SMTP 的库一起使用。
最终结果必须是形式,char* payload[] = {"strings, seperated, by, comma"};
而不是看起来要做char *payload = "strings\nseperated\nby\ncommas"
的事情。.c_str()
有谁知道如何将 a 转换为a std::string
?我认为括号是重要的部分。char* array[]
char* payload[] = {"strings, seperated, by, comma"};
简单的问题:
char *first_array[] = { "one", "two" };
char *second_array[] = { "three", "four"};
char *final_array[ strlen(*first_array) + strlen(*second_array) + 1];
strcpy( *final_array, *second_array );
cout << *final_array;
如何将 first_array 和 second_array 组合到 final_array 中?strcopy()
并strcat()
在这样实现时导致程序崩溃。我想我需要做的就是这个基本操作。