EmailDiscussions.com

EmailDiscussions.com (http://www.emaildiscussions.com/index.php)
-   FastMail Forum (http://www.emaildiscussions.com/forumdisplay.php?f=27)
-   -   Addressbook sync service available for testing (http://www.emaildiscussions.com/showthread.php?t=60354)

Jeremy Howard 15 Sep 2010 10:05 AM

Addressbook sync service available for testing
 
I've just released a test version of an addressbook-sync service. It works in my testing, but because this is an early version, you should either:
  • Backup your FM addressbook before using it, or
  • Test it using a separate account you create just for testing

The service syncs your FM address book with a GMail address book. This allows you in practice to sync your FM address book with iPhone, Blackberry, Outlook, etc! Here's how it works:
  1. Sign up for a GMail account - this is just to use as an sync intemediary, you don't actually ever have to use it for anything
  2. Set the sync service to sync FM with this GMail account
  3. Sync your Outlook, iPhone, etc with GMail's Contacts (check Google for how to do this)

You should ensure that your GMail Contacts list is empty before you first sync, otherwise you'll end up with duplicates (or, empty your FM contacts - if you already have contacts in both FM and GMail that you'd like to keep, have a look at this post: http://www.emaildiscussions.com/show...40&postcount=7 ). At this early testing stage, there's no way to schedule regular syncing - you have to click the 'sync' button manually.

Please note: The first sync can take 10 minutes or more, if your address book is large. Do not press Sync again while it's running, or you will definitely have problems. Also, be sure to leave at least a few minutes between each sync, even after it's finished.

The sync service is here: http://sync.howard.fm . You don't need to register for it - just use your FM username/password. The first time you use it, it will then ask you for your GMail username/password (although after that it will remember it).

Please give it a go, and let me know:
  • Did it work for you?
  • Was there any information that wasn't synced, or was synced to an odd field?
  • If you have a problem, try to find exactly which part of which contact is causing it, or what sequence of steps can replicate it

Known limitations:
  • Doesn't sync birth-dates
  • Doesn't sync custom fields, or fields that aren't available on both Google and FM

The more people who try it, the better! If you don't test it now, then I won't be able to fix any problems you find before I release it!

NB: this is not an official FastMail service, and is not supported by them. I wrote it for my own use, and am making it available to others in the hope it will be of some use.

Jeremy Howard 15 Sep 2010 10:08 AM

Oh by the way, if you get a server error, it should fill your screen up with lots of info (error message, stack trace, inner exception, etc...). If you see that, please copy the whole thing and paste it here, and let me know what happened when it occurred. When you paste it, use the little '#' button at the top of the forum-post window to wrap it in CODE tags.

nighthawk700 15 Sep 2010 11:37 AM

Quote:

Originally Posted by Jeremy Howard (Post 509721)
You should ensure that your GMail Contacts list is empty before you first sync, otherwise you'll end up with duplicates. At this early testing stage, there's no way to schedule regular syncing - you have to click the 'sync' button manually.

If this part of the equation is ever removed, it'd be useful for me. Since I use an Android phone, I already have heavy use of a GMail account (for the contacts, calendar, etc., everything BUT the email service! ;-) ) It'd be nice to be able to sync between them without having to start from scratch.

qwertz123456 15 Sep 2010 03:25 PM

Hello Jeremy,

already like how that sounds: "sync with FM" :D

I have a few questions before I even give it a try.

Will the following process work?

1. Delete all my FM contacts
2. Use an "empty" Google account
3. Sync my Outlook contact to Google
4. Now finally sync my contacts to FM

qwertz123456 15 Sep 2010 03:26 PM

Oh and keep up the good work!

I know I'm pushing it here, but how about a Dropbox integration into FM;)

Jeremy Howard 15 Sep 2010 03:41 PM

Quote:

Originally Posted by qwertz123456 (Post 509735)
Will the following process work?

1. Delete all my FM contacts
2. Use an "empty" Google account
3. Sync my Outlook contact to Google
4. Now finally sync my contacts to FM

That should work just fine. Download all your FM contacts first, so you've got a backup in case you want to revert back. Please let us know how you go!

Re: Dropbox - what kind of integration did you have in mind?

Jeremy Howard 15 Sep 2010 03:45 PM

Quote:

Originally Posted by nighthawk700 (Post 509728)
If this part of the equation is ever removed, it'd be useful for me. Since I use an Android phone, I already have heavy use of a GMail account (for the contacts, calendar, etc., everything BUT the email service! ;-) ) It'd be nice to be able to sync between them without having to start from scratch.

OK, I think I have a solution for you. Please take backups first in case this doesn't work.

To Sync when you already have GMail and FM contacts:
  1. Download your FM addressbook (probably vCard / Mac OS X format would be best)
  2. Upload that file to GMail contacts
  3. Use GMail's "Duplicates" command to merge all your contacts together
  4. Delete all your FM contacts
  5. On the sync service screen, clear all sync state (if you've ever used it before)
  6. Sync!
It would be great if you could try this, and let us know how it turns out. It doesn't matter whether it's FM or GMail that's empty to start - it's just important to realise that on the first sync all contacts are copied in each direction, without attempting to merge duplicates.

Jeremy Howard 15 Sep 2010 03:51 PM

Quote:

Originally Posted by Jeremy Howard (Post 509740)
To Sync when you already have GMail and FM contacts:

BTW, I think FM's addressbook-import function automatically dedupes, so another approach would be to download your GMail addresses, upload them to FM, check they've merged OK, and then delete all your GMail addresses. Then you're ready to sync (making sure you've cleared sync state first, if you've ever synced before - otherwise those deletions will be synced over!)

qwertz123456 15 Sep 2010 04:22 PM

Quote:

Originally Posted by Jeremy Howard (Post 509739)

Re: Dropbox - what kind of integration did you have in mind?

Well, utilizing the Dropbox space one feature I could think of would be to have a button at the bottom of the email compose screen and select a files from one's own Dropbox where you can also set the privileges of that file (public, private, password etc.). It then automatically insert the link to the email.

Jeremy Howard 15 Sep 2010 04:28 PM

Quote:

Originally Posted by qwertz123456 (Post 509745)
Well, utilizing the Dropbox space one feature I could think of would be to have a button at the bottom of the email compose screen and select a files from one's own Dropbox where you can also set the privileges of that file (public, private, password etc.). It then automatically insert the link to the email.

Ah, well I can't help with anything like that - I can't change anything in the web interface. I just use the public FM APIs like everyone else!

(Having said that - your FM web space is DAV and FTP accessible, and you can attach stuff from there directly to emails that you compose, so hooking in Dropbox isn't so important, IMO).

qwertz123456 15 Sep 2010 05:34 PM

I found a bug! :-)
 
Server Error in '/' Application.
String or binary data would be truncated.
The statement has been terminated.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: String or binary data would be truncated.
The statement has been terminated.

Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.


Stack Trace:

[SqlException (0x80131904): String or binary data would be truncated.
The statement has been terminated.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +404
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +412
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1363
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +58
System.Data.SqlClient.SqlDataReader.get_MetaData() +118
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6312385
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +6313986
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +538
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +28
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +256
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +19
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() +23
NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd) +775
NHibernate.Id.InsertSelectDelegate.ExecuteAndExtract(IDbCommand insert, ISessionImplementor session) +83
NHibernate.Id.Insert.AbstractReturningDelegate.PerformInsert(SqlCommandInfo insertSQL, ISessionImplementor session, IBinder binder) +129

[GenericADOException: could not insert: [FastServicesDotNet.Log][SQL: INSERT INTO [Log] (Message, User_id) VALUES (?, ?); select SCOPE_IDENTITY()]]
NHibernate.Id.Insert.AbstractReturningDelegate.PerformInsert(SqlCommandInfo insertSQL, ISessionImplementor session, IBinder binder) +388
NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[] fields, Object obj, ISessionImplementor session) +277
NHibernate.Action.EntityIdentityInsertAction.Execute() +208
NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate(Object entity, EntityKey key, IEntityPersister persister, Boolean useIdentityColumn, Object anything, IEventSource source, Boolean requiresImmediateIdAccess) +867
NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object entity, String entityName, Object anything, IEventSource source, Boolean requiresImmediateIdAccess) +261
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent event) +49
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent event) +113
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent event) +330
NHibernate.Impl.SessionImpl.FireSaveOrUpdate(SaveOrUpdateEvent event) +395
NHibernate.Impl.SessionImpl.SaveOrUpdate(Object obj) +383
FastServicesDotNet.DbSyncLogger.Log(String message) in C:\Docs\Visual Studio 2010\Projects\svn\other\FastServices\FMSync\DbSyncLogger.cs:21
FastServicesDotNet.FmGoogleSync.DoNewGoog_(IEnumerable`1 newGoogContacts) in C:\Docs\Visual Studio 2010\Projects\svn\other\FastServices\FMSync\FmGoogleSync.cs:88
FastServicesDotNet.FmGoogleSync.Run() in C:\Docs\Visual Studio 2010\Projects\svn\other\FastServices\FMSync\FmGoogleSync.cs:49
FmSyncSvc.Controllers.HomeController.Sync() in C:\Docs\Visual Studio 2010\Projects\svn\other\FastServices\FmSyncSvc\Controllers\HomeController.cs:46
lambda_method(Closure , ControllerBase , Object[] ) +79
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +258
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39
System.Web.Mvc.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() +125
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +640
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +312
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +709
System.Web.Mvc.Controller.ExecuteCore() +162
System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__4() +58
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +20
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +453
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +371


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1

Jeremy Howard 15 Sep 2010 05:41 PM

Thanks for posting that. Should be fixed now. Can you please try again? Before you sync again, please:
  1. Delete all addresses from either FM or GMail
  2. Click the 'clear' link on the sync page to clear all your sync state
If you get the same problem again, please PM me the details.

qwertz123456 15 Sep 2010 06:13 PM

Nope, didn't sync at all. Didn't get an error either. Waited for 10 min. to see if the contact would pop up in my FM, but no luck. I have approx. 600 contacts.

Jeremy Howard 15 Sep 2010 06:19 PM

It's logging correctly now, so I can see the error. The error is "Failed to insert to FM, Field 'Notes' contains disallowed character(s)". I'll try to work out what characters are allowed, and then clear invalid ones when syncing.

Also, I see that when one insert fails, all the following ones fail too, because the SOAP session gets interrupted - that's why nothing got copied over.

I'll let you know when this is fixed. Thanks for helping test!

qwertz123456 15 Sep 2010 06:31 PM

Tzzz...if that's all I have to do to test your product, I'm glad to :D You're doing all the work :rolleyes:


All times are GMT +9. The time now is 11:02 AM.


Copyright EmailDiscussions.com 1998-2022. All Rights Reserved. Privacy Policy