1
0
mirror of https://github.com/moparisthebest/davmail synced 2024-08-13 16:53:51 -04:00

SMTP: convert Resent- headers, see 3019708

git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1364 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
mguessan 2010-08-18 13:23:49 +00:00
parent a51d910df6
commit 5fca57f0f3
2 changed files with 24 additions and 2 deletions

View File

@ -95,6 +95,7 @@ public abstract class ExchangeSession {
protected static final String INBOX = "INBOX";
protected static final String LOWER_CASE_INBOX = "inbox";
protected static final String SENT = "Sent";
protected static final String SENDMSG = "##DavMailSubmissionURI##";
protected static final String DRAFTS = "Drafts";
protected static final String TRASH = "Trash";
protected static final String JUNK = "Junk";
@ -1016,6 +1017,17 @@ public abstract class ExchangeSession {
}
}
public void convertResentHeader(MimeMessage mimeMessage, String headerName) throws MessagingException {
String[] resentHeader = mimeMessage.getHeader("Resent-"+headerName);
if (resentHeader != null) {
mimeMessage.removeHeader("Resent-"+headerName);
mimeMessage.removeHeader(headerName);
for (String value:resentHeader) {
mimeMessage.addHeader(headerName, value);
}
}
}
/**
* Send message in reader to recipients.
* Detect visible recipients in message body to determine bcc recipients
@ -1031,6 +1043,12 @@ public abstract class ExchangeSession {
if (!messages.isEmpty()) {
LOGGER.debug("Dropping message id " + mimeMessage.getMessageID() + ": already sent");
} else {
convertResentHeader(mimeMessage, "From");
convertResentHeader(mimeMessage, "To");
convertResentHeader(mimeMessage, "Cc");
convertResentHeader(mimeMessage, "Bcc");
convertResentHeader(mimeMessage, "Message-Id");
// remove visible recipients from list
Set<String> visibleRecipients = new HashSet<String>();
Address[] recipients = mimeMessage.getAllRecipients();

View File

@ -95,6 +95,7 @@ public class DavExchangeSession extends ExchangeSession {
protected String inboxName;
protected String deleteditemsName;
protected String sentitemsName;
protected String sendmsgName;
protected String draftsName;
protected String calendarName;
protected String contactsName;
@ -119,6 +120,8 @@ public class DavExchangeSession extends ExchangeSession {
exchangeFolderPath = mailPath + draftsName + folderPath.substring(DRAFTS.length());
} else if (folderPath.startsWith(SENT)) {
exchangeFolderPath = mailPath + sentitemsName + folderPath.substring(SENT.length());
} else if (folderPath.startsWith(SENDMSG)) {
exchangeFolderPath = mailPath + sendmsgName + folderPath.substring(SENDMSG.length());
} else if (folderPath.startsWith(CONTACTS)) {
exchangeFolderPath = mailPath + contactsName + folderPath.substring(CONTACTS.length());
} else if (folderPath.startsWith(CALENDAR)) {
@ -600,7 +603,7 @@ public class DavExchangeSession extends ExchangeSession {
protected String getFolderName(String url) {
if (url != null) {
if (url.endsWith("/")) {
return url.substring(url.lastIndexOf('/', url.length() - 2) + 1);
return url.substring(url.lastIndexOf('/', url.length() - 2) + 1, url.length()-1);
} else if (url.indexOf('/') > 0) {
return url.substring(url.lastIndexOf('/') + 1);
} else {
@ -628,6 +631,7 @@ public class DavExchangeSession extends ExchangeSession {
sentitemsUrl = getURIPropertyIfExists(properties, "sentitems");
sentitemsName = getFolderName(sentitemsUrl);
sendmsgUrl = getURIPropertyIfExists(properties, "sendmsg");
sendmsgName = getFolderName(sendmsgUrl);
draftsUrl = getURIPropertyIfExists(properties, "drafts");
draftsName = getFolderName(draftsUrl);
calendarUrl = getURIPropertyIfExists(properties, "calendar");
@ -2043,7 +2047,7 @@ public class DavExchangeSession extends ExchangeSession {
public void sendMessage(byte[] messageBody) throws IOException {
String messageName = UUID.randomUUID().toString() + ".EML";
createMessage(sendmsgUrl, messageName, null, messageBody);
createMessage(SENDMSG, messageName, null, messageBody);
}
protected boolean isGzipEncoded(HttpMethod method) {