|
FastMail Forum All posts relating to FastMail.FM should go here: suggestions, comments, requests for help, complaints, technical issues etc. |
|
Thread Tools |
15 Sep 2010, 10:05 AM | #1 |
Ultimate Contributor
Join Date: Sep 2001
Location: Australia
Posts: 11,501
|
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:
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:
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:
Known limitations:
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. Last edited by Jeremy Howard : 16 Sep 2010 at 04:19 PM. Reason: Move URL to sync.howard.fm |
15 Sep 2010, 10:08 AM | #2 |
Ultimate Contributor
Join Date: Sep 2001
Location: Australia
Posts: 11,501
|
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.
|
15 Sep 2010, 11:37 AM | #3 |
Essential Contributor
Join Date: Oct 2004
Location: Baltimore, MD Suburbs (US)
Posts: 237
|
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.
|
15 Sep 2010, 03:25 PM | #4 |
Essential Contributor
Join Date: Jan 2008
Posts: 378
|
Hello Jeremy,
already like how that sounds: "sync with FM" 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 |
15 Sep 2010, 03:26 PM | #5 |
Essential Contributor
Join Date: Jan 2008
Posts: 378
|
Oh and keep up the good work!
I know I'm pushing it here, but how about a Dropbox integration into FM |
15 Sep 2010, 03:41 PM | #6 | |
Ultimate Contributor
Join Date: Sep 2001
Location: Australia
Posts: 11,501
|
Quote:
Re: Dropbox - what kind of integration did you have in mind? |
|
15 Sep 2010, 03:45 PM | #7 | |
Ultimate Contributor
Join Date: Sep 2001
Location: Australia
Posts: 11,501
|
Quote:
To Sync when you already have GMail and FM contacts:
|
|
15 Sep 2010, 03:51 PM | #8 |
Ultimate Contributor
Join Date: Sep 2001
Location: Australia
Posts: 11,501
|
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!)
|
15 Sep 2010, 04:22 PM | #9 |
Essential Contributor
Join Date: Jan 2008
Posts: 378
|
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.
|
15 Sep 2010, 04:28 PM | #10 | |
Ultimate Contributor
Join Date: Sep 2001
Location: Australia
Posts: 11,501
|
Quote:
(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). |
|
15 Sep 2010, 05:34 PM | #11 |
Essential Contributor
Join Date: Jan 2008
Posts: 378
|
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 |
15 Sep 2010, 05:41 PM | #12 |
Ultimate Contributor
Join Date: Sep 2001
Location: Australia
Posts: 11,501
|
Thanks for posting that. Should be fixed now. Can you please try again? Before you sync again, please:
|
15 Sep 2010, 06:13 PM | #13 |
Essential Contributor
Join Date: Jan 2008
Posts: 378
|
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.
|
15 Sep 2010, 06:19 PM | #14 |
Ultimate Contributor
Join Date: Sep 2001
Location: Australia
Posts: 11,501
|
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! |
15 Sep 2010, 06:31 PM | #15 |
Essential Contributor
Join Date: Jan 2008
Posts: 378
|
Tzzz...if that's all I have to do to test your product, I'm glad to You're doing all the work
|