diff --git a/src/java/davmail/caldav/CaldavConnection.java b/src/java/davmail/caldav/CaldavConnection.java index 4216cfae..c2c63b43 100644 --- a/src/java/davmail/caldav/CaldavConnection.java +++ b/src/java/davmail/caldav/CaldavConnection.java @@ -879,7 +879,11 @@ public class CaldavConnection extends AbstractConnection { } if (request.hasProperty("addressbook-home-set") && "users".equals(prefix)) { - response.appendHrefProperty("E:addressbook-home-set", "/users/" + actualPrincipal + "/contacts/"); + if (request.isUserAgent("Address%20Book")) { + response.appendHrefProperty("E:addressbook-home-set", "/users/" + actualPrincipal + '/'); + } else { + response.appendHrefProperty("E:addressbook-home-set", "/users/" + actualPrincipal + "/contacts/"); + } } if ("users".equals(prefix)) { diff --git a/src/java/davmail/exchange/ExchangeSession.java b/src/java/davmail/exchange/ExchangeSession.java index d27d7a39..629316f0 100644 --- a/src/java/davmail/exchange/ExchangeSession.java +++ b/src/java/davmail/exchange/ExchangeSession.java @@ -1769,7 +1769,8 @@ public abstract class ExchangeSession { if ("true".equals(get("haspicture"))) { try { ContactPhoto contactPhoto = getContactPhoto(this); - writer.appendProperty("PHOTO;BASE64;TYPE=\"" + contactPhoto.contentType + "\";ENCODING=\"b\"", contactPhoto.content); + writer.writeLine("PHOTO;BASE64;TYPE=\"" + contactPhoto.contentType + "\";ENCODING=\"b\":"); + writer.writeLine(contactPhoto.content, true); } catch (IOException e) { LOGGER.warn("Unable to get photo from contact " + this.get("cn")); } diff --git a/src/java/davmail/exchange/ICSBufferedWriter.java b/src/java/davmail/exchange/ICSBufferedWriter.java index a43e9135..6e49c54c 100644 --- a/src/java/davmail/exchange/ICSBufferedWriter.java +++ b/src/java/davmail/exchange/ICSBufferedWriter.java @@ -42,11 +42,19 @@ public class ICSBufferedWriter { * @param line ics event line */ public void writeLine(String line) { - if (line.length() > 75) { - buffer.append(line.substring(0, 75)); - newLine(); + writeLine(line, false); + } + + public void writeLine(String line, boolean prefix) { + int maxLength = 77; + if (prefix) { + maxLength--; buffer.append(' '); - writeLine(line.substring(75)); + } + if (line.length() > maxLength) { + buffer.append(line.substring(0, maxLength)); + newLine(); + writeLine(line.substring(maxLength), true); } else { buffer.append(line); newLine();