- Omnibus rebus | Борис Бикбов - http://boris.bikbov.ru -

Синхронизация контактов между почтовой программой на ПК и смартфоном


Тема не совсем обычная для этого блога, но возможно мой опыт и в этой области будет полезен и облегчит кому-нибудь решение по синхронизации контактов (адресной книги) между почтовой программой на персональном компьютере и смартфоном. Синхронизация предполагает, что если Вы добавляете или изменяете контакты человека на одном устройстве, то они в автоматическом режиме изменяются и на другом устройстве – это очень удобно, и гарантирует что никакая информация не потеряется, а на обоих устройствах постоянно будет самая свежая адресная книга. После 8 лет использования у меня сломался телефон, и я купил новый – оказалось, что многие функции за эти годы очень сильно продвинулись, хотя какие-то вещи поменялись не в лучшую сторону. Основной отрицательный момент – разработчики программ для современных смартфонов и разработчики почтовых программ на “большом” компьютере не нашли общего языка для синхронизации контактов – вернее протокол такого обмена разработан, но в его применении есть свои подводные камни, о чем я расскажу ниже. У меня смартфон на базе Андроид, но описанные мной ниже решения годятся также для iPhone, Windows Phone и Blackberry.

На всех Андроид-смартфонах возможна синхронизация контактов с аккаунтом Google (и это даже происходит по умолчанию если Вы специально не отключили такую опцию), но при этом пользоваться контактами можно только через интерфейс GMail – тогда как почтовые программы на ПК напрямую ни с аккаунтом Google, ни со смартфоном синхронизироваться не будут. Получается, что адреса электронной почты надо вводить дважды – один раз в смартфон, один раз в почтовую программу; да и один и тот же человек может быть записан в разных вариациях на смартфоне и в почтовой программе. Конечно, это неудобно и увеличивает вероятность того, что в нужный момент в одном из двух устройств не окажется нужного емейла. Поэтому целью данной заметки будет рассказ о том, как автоматизировать обмен контактами между смартфоном и почтовой программой на ПК – чтобы вводить контакт полностью только в одно устройство, а на втором этот контакт появлялся бы автоматически. Существует два основных способа добиться такой синхронизации – либо через локально установленную на компьютере программу, либо через специальный сервер в Интернет.

Синхронизация через локальную программу (напрямую между смартфоном и ПК)
Наиболее простой способ – установить специальную программу как на ПК, так и на смартфон. Она будет синхронизировать контакты при подключении смартфона к ПК через USB-порт, по Wi-Fi или Bluetooth.
Основное ограничение ряда таких программ – они позволяют синхронизировать контакты только с платной почтовой программой Outlook (которая схожа по названию, но является более продвинутой версией устанавливаемой вместе с Windows по умолчанию Outlook Express). Есть программы, которые позволяют синхронизировать контакты не только с платной Outlook, но и с Thunderbird или другими бесплатными почтовыми приложениями с довольно развитой функциональностью. Помимо синхронизации, такие программы позволяют делать резервные копии памяти смартфона и управлять его содержимым – смс, фотографиями, историей звонков, настройками и проч. Полезны бывают такие программы и при покупке нового смартфона – они позволяют полностью скопировать информацию со старого аппарата на новый.

Поскольку я пользуюсь почтовой программой TheBat, то ни одна из перечисленных выше программ не подходит. Кроме того, могут не совсем подойти такие программы и тем, кто хочет синхронизировать контакты на двух компьютерах (рабочем и домашнем). Поэтому рассмотрим вариант синхронизации контактов через специальные серверы в Интернет.

Синхронизация через CardDAV-сервер (данные между смартфоном и ПК передаются через специальный сервер в Интернет)
Сначала приведу немного теории. Этот способ предполагает обмен контактами между смартфоном и почтовой программой по специальному протоколу CardDAV, а если надо синхронизировать события календаря – то по протоколу CalDAV. Большим преимуществом CardDAV (и CalDAV) является наличие в Интернет бесплатных для частных лиц серверов, которые позволяют безопасно хранить и обмениваться контактами между смартфоном и почтовой программой – при этом пользователь должен просто ввести на обоих устройствах имя сервера, полученные при регистрации имя и пароль. Вся внутренняя “кухня” обеспечивается администраторами серверов, которые существуют за счет платы корпоративных клиентов или пользователей, которым нужна синхронизация контактов между 3 и более устройствами (например, единая адресная книга может поддерживаться на двух компьютерах и пяти телефонах). И с ПК, и со смартфона программа будет передавать контакты на сервер – т.е. синхронизация будет происходить когда по крайней мере одно из устройств подключено к Интернету. Одновременного подключения Ваших устройств к Интернету не требуется, потому что сначала с сервером может синхронизироваться почтовая программа на ПК, а когда к Интернету подключится смартфон – то с сервером синхронизируется и он.
В принципе, любой из DAV-серверов можно установить и у себя на локальном ПК, который будет использоваться как сервер – однако это требует продвинутых навыков (кратко это описано например тут [7], тут [8], тут [9] и тут [10]). Продвинутые пользователи могут выбрать CardDAV и CalDAV сервер на любой вкус из бесплатных Baikal [11], radicale [12], SabreDAV [13], ownCloud [14]). При выборе сервера надо учитывать также какой тип синхронизации поддерживает приложение на смартфоне и почтовая программа – Digest или Basic, но обычным пользователям эти детали не важны.
Теперь перейдем к практике. Условно все действия можно разбить на три шага.
Во-первых, Вам надо зарегистрироваться на одном из веб-сервисов, которые поддерживают CardDAV. Все равно какой из таких сервисов Вы выберите: Zimbra [15], Yandex [16], fruux [17], FastMail [18], GMX [19], Posteo [20] или другие [21].
В качестве веб-сервиса с поддержкой CardDAV можно использовать и собственно Google (и тогда все контакты будут еще и доступны через веб-интерфейс Gmail), однако для него описаны сбои при синхронизации [22] и по отдельным отзывам иногда происходит “съедание” первой цифры телефона если в книге контактов он начинается с “8” а не “+7”. Так это или нет – на знаю, синхронизацию через Google я пробовать не стал.
Важным, и отнюдь не интуитивным, действием после регистрации в таких веб-сервисах является необходимость однократного начального импорта адресной книги из почтовой программы в аккаунт веб-сервиса в формате vCard. Нужно это для того, чтобы веб-сервис мог отслеживать, какие именно контакты были добавлены или изменены в почтовой программе и на смартфоне. Без этого однократного начального импорта устройства будут нормально присоединяться к веб-сервису, но синхронизации контактов происходить не будет. Этот момент прописан в инструкциях [23] только к некоторым веб-сервисам с поддержкой CardDAV, и если его не знать – то можно потерять довольно много времени на выяснение причин почему все настроено как надо, но не работает. Для того чтобы синхронизация между устройствами происходила, в веб-сервис должен быть внесен хотя бы один контакт.
Во-вторых, Вам надо установить специальное приложение на смартфон. Как настраивать выбранное приложение можно узнать либо на перечисленных выше веб-сервисах, либо на сайтах самих Андроид-приложений.
Для Андроид-смартфонов существует несколько приложений, которые позволяют синхронизировать контакты и события календаря через протоколы CardDAV и CalDAV. Можете выбрать одну из приведенных ниже:

Такие же приложения существуют и для смартфонов на базе iPhone, BlackBerry и Windows Mobile.
В-третьих, Вам надо настроить почтовую программу. Здесь проблем и особенностей больше всего: потому что не все почтовые программы поддерживают протокол CardDAV, и даже те которые поддерживают – подчас делают это не совсем корректно. Давайте разберем каждую почтовую программу отдельно.
Thunderbird. Встроенной поддержки CardDAV нет, поэтому надо устанавливать плагин SOGo Connector [30]. Как его установить и настроить написано тут [31]. Мне Thunderbird не очень нравится, поскольку в нем отсутствует хорошо продуманная система шаблонов, и этот недостаток лишь частично [32] нивелируется дополнительным плагином SmartTemplate4 [33].
Outlook. Встроенной поддержки CardDAV нет, поэтому надо установить бесплатный плагин Outlook CalDav Synchronizer [34] (есть также платные плагины Universal WebDAV Collaborator [35], EVO Collaborator [36], OutlookDAV [37]).
ThaBat! В последней версии появилась встроенная поддержка [38] CardDAV – но работает она неправильно (по крайней мере в версии 7.3.4)! Все контакты из адресной книги ThaBat правильно передаются на сервер с поддержкой CardDAV (и с сервера на смартфон). Но любые изменения, сделанные на сервере или на Андроиде внутри одного контакта (например, изменение или добавление номера телефона для уже существующего контакта) приводят к частичному исчезновению данных в адресной книге ThaBat (тогда как на Андроиде все остается в сохранности), а иногда контакты дублируются или в ThaBat “слетают” шаблоны написания писем для группы или данного контакта, также между ThaBat и сервером не синхронизируются даты дней рождений (все эти проблемы признают и в службе поддержки ThaBat). К сожалению, это делает невозможным полноценную синхронизацию между ThaBat, CardDAV-сервером и смартфоном.
Но поскольку в ThaBat есть другие удобные решения и я хочу продолжать им пользоваться, то я выработал следующую систему действий для адекватной синхронизации контактов между ThaBat и смартфоном:
1. На устройстве Андроид я ввожу только новые контакты в адресную книгу аккаунта CardDAV-приложения (т.е. при вводе нового контакта в поле “Хранить в” надо указывать чтобы он сохранялся в аккаунте CardDAV-приложения), и при помощи Андроид-приложения эти новые контакты синхронизируются с CardDAV-сервером. В ThaBat отдельная (не основная) адресная книга также синхронизируется с CardDAV-сервером в автоматическом режиме. Таким образом, все новые контакты надо вводить только на Андроиде, и они автоматически перебрасываются в адресную книгу ThaBat.
2. Периодически я “перебрасываю” эти новые контакты внутри ThaBat из адресной книги, которая синхронизируется с сервером, в основную адресную книгу. Причем новые контакты можно перебрасывать в отдельные группы (категории) контактов адресной книги – что позволяет их нормально упорядочивать (тогда как по CardDAV ни одна почтовая программа ни с одним смартфоном в принципе не может синхронизировать информацию к какой группе в адресной книге принадлежит контакт, даже когда все остальное содержимое контакта синхронизируется нормально).
3. После “переброски” всех данных в основную адресную книгу ThaBat я стираю все контакты в адресной книге на смартфоне (т.е. на смартфоне не остается вообще ни одного контакта).
4. Сразу после этого я выгружаю все контакты из адресной книги ThaBat в формате vCard, и импортирую этот vCard-файл в адресную книгу на смартфоне (важно что импорт из vCard-файла производится именно в адресную книгу телефона, а не в адресную книгу аккаунта Google или аккаунта CardDAV-приложения).
Таким образом, и на смартфоне, и в ThaBat получается одинаковый по содержимому набор контактов – для чего и нужны все эти действия.
В этой схеме есть два не очень комфортных момента. Во-первых, 3 и 4 шаги надо делать вручную – но раз в месяц или пару месяцев это не слишком обременительно, и в принципе делается в несколько кликов. Во-вторых, и это самое неудобное – любые изменения в уже существующих контактах (например, добавление нового номера телефона для уже существующего контакта, или перемену почтового адреса) надо вносить только в ThaBat (если вносить эти изменения в смартфон, то на 3 шаге всё будет стерто).
Некоторые другие почтовые программы также поддерживают синхронизацию адресных книг по протоколу CardDAV (платная eM Client [39] под Windows, бесплатные GNOME Evolution [40] и KDE KOrganizer [41] для Linux, и проч. [42]), но я не вдавался для них в подробности.

Какой бы из приведенных выше вариантов Вы не выбрали – в любом случае между почтовой программой и мобильным устройством всегда будет поддерживаться единый список контактов (и при желании – событий календаря).