Fix double dot problem also for SMTP and sendmail and remove some unused code.

svn path=/trunk/kdenetwork/kmail/; revision=69584
wilder-work
Michael Haeckel 26 years ago
parent a005e23725
commit 88ac578655
  1. 19
      kmsender.cpp
  2. 3
      kmsender.h

@ -594,23 +594,14 @@ bool KMSendProc::finish(void)
}
//-----------------------------------------------------------------------------
const QString KMSendProc::prepareStr(const QString aStr, bool toCRLF)
const QString KMSendProc::prepareStr(const QString aStr, bool toCRLF,
bool noSingleDot)
{
QString str;
int num;
int pos=0;
if (aStr.isEmpty()) return str;
for (num=0; pos<(int)aStr.length(); pos++)
{
if (aStr[pos]=='\n')
{
num++;
if (aStr[pos+1]=='.') num++;
}
}
// Convert LF to CR+LF and handle dots at beginning of line.
for (pos=0; pos<(int)aStr.length(); pos++)
{
@ -619,11 +610,11 @@ const QString KMSendProc::prepareStr(const QString aStr, bool toCRLF)
{
if (toCRLF) str += '\r';
str += c;
if (aStr[pos+1]=='.' && aStr[pos+2]<=' ')
if (noSingleDot && aStr[pos+1]=='.' && aStr[pos+2]=='\n')
{
pos++;
str += '.';
str += '.';
str += ' ';
}
}
else str += c;
@ -937,7 +928,7 @@ bool KMSendSMTP::smtpSend(KMMessage* aMsg)
return smtpFailed("DATA", replyCode);
statusMsg(i18n("transmitting message"));
msgStr = prepareStr(aMsg->asString(), TRUE);
msgStr = prepareStr(aMsg->asString(), TRUE, FALSE);
replyCode = mClient->SendData((const char*)msgStr);
if (!bccStr.isEmpty()) aMsg->setBcc(bccStr);

@ -191,7 +191,8 @@ protected:
virtual void failed(const QString msg);
/** Prepare message for sending. */
virtual const QString prepareStr(const QString str, bool toCRLF=FALSE);
virtual const QString prepareStr(const QString str, bool toCRLF=FALSE,
bool noSingleDot=TRUE);
/** Informs the user about what is going on. */
virtual void statusMsg(const QString&);

Loading…
Cancel
Save