使用vmime构建电子邮件时出现乱码文本

时间:2010-03-13 23:38:19

标签: 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>

输出似乎在'root'周围被截断,显示后没有任何内容。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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