mirror of
https://github.com/moparisthebest/davmail
synced 2024-12-13 11:12:22 -05:00
SMTP: workaround for misconfigured Exchange servers: failover on Draft message creation through properties. Warning: attachments are lost
git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1585 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
parent
f8823f36a6
commit
e855b56071
@ -47,8 +47,6 @@ import javax.mail.MessagingException;
|
|||||||
import javax.mail.Session;
|
import javax.mail.Session;
|
||||||
import javax.mail.internet.InternetAddress;
|
import javax.mail.internet.InternetAddress;
|
||||||
import javax.mail.internet.MimeMessage;
|
import javax.mail.internet.MimeMessage;
|
||||||
import javax.mail.internet.MimeMultipart;
|
|
||||||
import javax.mail.internet.MimePart;
|
|
||||||
import javax.mail.util.SharedByteArrayInputStream;
|
import javax.mail.util.SharedByteArrayInputStream;
|
||||||
import javax.xml.stream.XMLStreamException;
|
import javax.xml.stream.XMLStreamException;
|
||||||
import javax.xml.stream.XMLStreamReader;
|
import javax.xml.stream.XMLStreamReader;
|
||||||
@ -2228,6 +2226,37 @@ public class DavExchangeSession extends ExchangeSession {
|
|||||||
int code = httpClient.executeMethod(putmethod);
|
int code = httpClient.executeMethod(putmethod);
|
||||||
|
|
||||||
if (code != HttpStatus.SC_OK && code != HttpStatus.SC_CREATED) {
|
if (code != HttpStatus.SC_OK && code != HttpStatus.SC_CREATED) {
|
||||||
|
LOGGER.warn("Draft message creation failed, failover to property update. Note: attachments are lost");
|
||||||
|
|
||||||
|
ArrayList<DavConstants> propertyList = new ArrayList<DavConstants>();
|
||||||
|
propertyList.add(Field.createDavProperty("to", mimeMessage.getHeader("to", ",")));
|
||||||
|
propertyList.add(Field.createDavProperty("cc", mimeMessage.getHeader("cc", ",")));
|
||||||
|
propertyList.add(Field.createDavProperty("message-id", mimeMessage.getHeader("message-id", ",")));
|
||||||
|
|
||||||
|
String contentType = mimeMessage.getContentType();
|
||||||
|
|
||||||
|
if (contentType.startsWith("text/plain")) {
|
||||||
|
propertyList.add(Field.createDavProperty("description", (String)mimeMessage.getContent()));
|
||||||
|
} else if (contentType.startsWith("text/html")) {
|
||||||
|
propertyList.add(Field.createDavProperty("htmldescription", (String)mimeMessage.getContent()));
|
||||||
|
} else {
|
||||||
|
LOGGER.warn("Unsupported content type: "+contentType+" message body will be empty");
|
||||||
|
}
|
||||||
|
|
||||||
|
propertyList.add(Field.createDavProperty("subject", mimeMessage.getHeader("subject", ",")));
|
||||||
|
PropPatchMethod propPatchMethod = new PropPatchMethod(messageUrl, propertyList);
|
||||||
|
try {
|
||||||
|
int patchStatus = DavGatewayHttpClientFacade.executeHttpMethod(httpClient, propPatchMethod);
|
||||||
|
if (patchStatus == HttpStatus.SC_MULTI_STATUS) {
|
||||||
|
code = HttpStatus.SC_OK;
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
propPatchMethod.releaseConnection();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (code != HttpStatus.SC_OK && code != HttpStatus.SC_CREATED) {
|
||||||
|
|
||||||
// first delete draft message
|
// first delete draft message
|
||||||
if (!davProperties.isEmpty()) {
|
if (!davProperties.isEmpty()) {
|
||||||
try {
|
try {
|
||||||
|
Loading…
Reference in New Issue
Block a user