2010-03-13 3 views
0

안녕하세요. Qt C++ 프로그램에는 bash 명령 출력의 처음 128 자 정도를 전자 메일 주소로 보내야하는 부분이 있습니다.vmime을 사용하여 전자 메일을 구성 할 때 잘못된 텍스트가 발생했습니다.

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는 '1! : 청각 장애의 출력은 여기에 관련 코드가 textEdit_displayOutput라는 내 GUI에서 텍스트 상자에 캡처 나는 메시지 작성기 (객체 m_vmMessage)를 사용하여 만들어 내 메시지에 넣고

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 = 

더 다음과 같아야 반면 :/'와 개행 vmime 이런 출력 단자 제공한다

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> 

출력하는 truncat 보인다 'root'주위에 표시됩니다. 아무 것도 표시되지 않습니다.

전자 메일을 어떻게 인코딩하고 적절하게 결합합니까? vmime은 의도적으로 그것을 표시하고 전자 메일의 실제 내용이 완전하고 올바르게 형식화되어 있습니까?

감사합니다.

답변

1

=0A은 줄 바꿈 (LF) 문자입니다.
=09은 가로 탭 (HT)입니다.

이것은 인쇄되지 않는 (제어) 문자를 인코딩하는 MIME의 방법이라고 생각합니다.

+0

전자 메일의 실제 정보는 괜찮습니까? 그뿐 아니라 'ls'의 전체 출력도 제공하지 않습니다. ('root '에서 잘 렸습니다) –

+0

이메일 수신시 무엇이 보입니까? 괜찮은 이메일 클라이언트는 당신에게 원시 MIME 인코딩 첨부 파일을 보여줘서는 안된다고 생각합니다. 또한 잘라내는 것은 아마도 별개의 문제 일 수 있습니다. 플러시되지 않는 버퍼링 된 출력 스트림이 있습니까? 아니면 ...? –

관련 문제