c++ - 使用 vmime 构建电子邮件时出现乱码

标签 c++ qt text encode vmime

嘿,我的 Qt C++ 程序有一部分需要将 bash 命令输出的前 128 个字符左右发送到电子邮件地址。 tty 的输出被捕获在我的 gui 中名为 textEdit_displayOutput 的文本框中,并放入我使用 Message Builder(对象 m_vmMessage)构建的消息中,这是相关的代码片段:

m_vmMessage.getTextPart()->setCharset( vmime::charsets::US_ASCII );
m_vmMessage.getTextPart()->setText( vmime::create < vmime::stringContentHandler > ( ui->textEdit_displayOutput->toPlainText().toStdString() ) );
vmime::ref < vmime::message > msg = m_vmMessage.construct();
vmime::utility::outputStreamAdapter out( std::cout );
msg->generate( out );

给 bash 'ls/' 和一个换行符使得 vmime 给出这样的终端输出:

ls /=0Abin    etc=09   initrd.img.old  mnt=09 sbin=09  tmp=09   vmlinuz.o=
ld=0Aboot   farts=09   lib=09=09   opt=09 selinux  usr=0Acdrom  home=09  =
 lost+found=09   proc  srv=09  var=0Adev    initrd.img  media=09   root  =

而它应该看起来更像这样:

ls /
bin    etc     initrd.img.old  mnt   sbin     tmp      vmlinuz.old
boot   farts       lib         opt   selinux  usr
cdrom  home    lost+found      proc  srv      var
dev    initrd.img  media       root  sys      vmlinuz
18:22>

输出似乎在“根”周围被截断,显示后什么也没有。

如何正确编码和拼凑电子邮件? vmime 是否只是故意这样显示并且电子邮件的实际内容完整且格式正确?

谢谢!

最佳答案

=0A 是换行 (LF) 字符。
=09 是水平制表符 (HT)。

我认为这只是 MIME 对非打印(控制)字符进行编码的方式。

关于c++ - 使用 vmime 构建电子邮件时出现乱码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2440528/

相关文章:

c++ - C++ 的线程安全 vector 类

c++ - setLastModified 日期与 Qt

qt - 替换函数 $$find 总是不返回任何内容

java - 如何在文本文件中查找某些单词,然后在Java中查找数字?

android - 阻止传入的文本 (Android)

c++ - Qt Creator重构: Extract function

c++ - 如何在Visual Studio中的MFC中的ListControl中显示选中的文件名?

c++ - Qt:恢复 QTextEdit 的几何形状失败

qt - 如何使 TextArea 具有最大大小和滚动条?

SSRS 中的文本换行