Kaydet (Commit) a07a2d9c authored tarafından Tor Lillqvist's avatar Tor Lillqvist Kaydeden (comit) Fridrich Štrba

mail-document-subject.diff: sanitize subject if document mailed from LibreOffice

bnc#459176
üst c63d5210
...@@ -845,7 +845,13 @@ SfxMailModel::SendMailResult SfxMailModel::Send( const css::uno::Reference< css: ...@@ -845,7 +845,13 @@ SfxMailModel::SendMailResult SfxMailModel::Send( const css::uno::Reference< css:
Sequence< OUString > aAttachmentSeq(&(maAttachedDocuments[0]),maAttachedDocuments.size()); Sequence< OUString > aAttachmentSeq(&(maAttachedDocuments[0]),maAttachedDocuments.size());
xSimpleMailMessage->setSubject( maSubject ); if ( xSimpleMailMessage->getSubject().getLength() == 0 ) {
OUString baseName( maAttachedDocuments[0].copy( maAttachedDocuments[0].lastIndexOf( '/' ) + 1 ) );
OUString subject( baseName );
if ( maAttachedDocuments.size() > 1 )
subject += OUString::createFromAscii( ", ..." );
xSimpleMailMessage->setSubject( subject );
}
xSimpleMailMessage->setAttachement( aAttachmentSeq ); xSimpleMailMessage->setAttachement( aAttachmentSeq );
sal_Bool bSend( sal_False ); sal_Bool bSend( sal_False );
......
...@@ -30,6 +30,10 @@ ...@@ -30,6 +30,10 @@
#include "precompiled_shell.hxx" #include "precompiled_shell.hxx"
#include <osl/diagnose.h> #include <osl/diagnose.h>
#include <sal/macros.h> #include <sal/macros.h>
#include <rtl/string.hxx>
#include <rtl/ustring.hxx>
#include <rtl/uri.hxx>
#include <osl/thread.hxx>
#include "simplemapi.hxx" #include "simplemapi.hxx"
...@@ -166,7 +170,17 @@ void initMapiMessage( ...@@ -166,7 +170,17 @@ void initMapiMessage(
{ {
ZeroMemory(pMapiMessage, sizeof(MapiMessage)); ZeroMemory(pMapiMessage, sizeof(MapiMessage));
try {
rtl_uString *subject = NULL;
rtl_uString_newFromAscii(&subject, const_cast<char*>(gSubject.c_str()));
rtl_uString *decoded_subject = NULL;
rtl_uriDecode(subject, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8, &decoded_subject);
rtl::OUString ou_subject(decoded_subject);
pMapiMessage->lpszSubject = strdup(OUStringToOString(ou_subject, osl_getThreadTextEncoding(), RTL_UNICODETOTEXT_FLAGS_UNDEFINED_QUESTIONMARK).getStr());
}
catch (...) {
pMapiMessage->lpszSubject = const_cast<char*>(gSubject.c_str()); pMapiMessage->lpszSubject = const_cast<char*>(gSubject.c_str());
}
pMapiMessage->lpszNoteText = (gBody.length() ? const_cast<char*>(gBody.c_str()) : NULL); pMapiMessage->lpszNoteText = (gBody.length() ? const_cast<char*>(gBody.c_str()) : NULL);
pMapiMessage->lpOriginator = aMapiOriginator; pMapiMessage->lpOriginator = aMapiOriginator;
pMapiMessage->lpRecips = &aMapiRecipientList[0]; pMapiMessage->lpRecips = &aMapiRecipientList[0];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment