views:

83

answers:

1

Hey, my Qt C++ program has a part where it needs to send the first 128 characters or so of the output of a bash command to an email address. The output from the tty is captured in a text box in my gui called textEdit_displayOutput and put into my message I built using the Message Builder ( the object m_vmMessage ) Here is the relevant code snippet:

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 );

Giving bash 'ls /' and a newline makes vmime give terminal output like this:

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  =

Whereas it should look more like this:

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>

Output seems to be truncated around 'root', nothing after it is displayed.

How do I encode and piece together the email properly? Does vmime just display it like that on purpose and the actual content of the email is complete and properly formatted?

Thanks!

+2  A: 

=0A is a line feed (LF) character.
=09 is a horizontal tab (HT).

I think this is just MIME's way of encoding your non-printing (control) characters.

Scott Smith
Ok, so the actual information in the email is fine?Not only that, but it's also not giving the whole output of `ls` ( Notice it's truncated at 'root' )
Klaus Fiedler
What do you see on the receiving of the email? A decent email client shouldn't show you the raw MIME-encoded attachment, I would think. Also, the truncation thing is possibly a separate problem. Is there a buffered output stream that you're not flushing, or...?
Scott Smith