嘿,我的Qt C++程序有一部分需要将bash命令输出的前128个字符发送到一个电子邮件地址。tty的输出被捕获到我的gui中名为textEdit_displayOutput的文本框中,并放入我使用消息构建器(对象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只是故意那样显示它,并且电子邮件的实际内容是完整的和适当格式的吗?
谢谢!
发布于 2010-03-14 07:44:59
=0A是换行符(LF)。
我认为这只是MIME对非打印(控制)字符进行编码的方式。
https://stackoverflow.com/questions/2440528
复制相似问题