diff --git a/thunar/thunar-gobject-extensions.c b/thunar/thunar-gobject-extensions.c
index ec56b24ea212b15322e28ffee1936feb4a18ab10..32ec6d373a49eb29c5c415482f1cc6bb5bbd164a 100644
--- a/thunar/thunar-gobject-extensions.c
+++ b/thunar/thunar-gobject-extensions.c
@@ -169,3 +169,24 @@ thunar_g_strescape (const gchar *source)
   g_free (g_escaped);
   return result;
 }
+
+
+
+/**
+ * thunar_g_app_info_equal
+ * @appinfo1  : The first g_app_info object
+ * @appinfo2  : The second g_app_info object
+ *
+ * For unknown reason "g_app_info_equal" does weird stuff / crashes thunar in some cases.
+ * (select two files of the same type + Sent to --> mail recipient )
+ * So we use this trivial method to compare applications for now.
+ *
+ * Return value: : TRUE if appinfo1 is equal to appinfo2. FALSE otherwise.
+ **/
+gboolean
+thunar_g_app_info_equal (gpointer appinfo1,
+                         gpointer appinfo2)
+{
+  return g_utf8_collate (g_app_info_get_name (appinfo1),
+                         g_app_info_get_name (appinfo2)) == 0;
+}
diff --git a/thunar/thunar-gobject-extensions.h b/thunar/thunar-gobject-extensions.h
index 8940ea1acef4b1fc28b9405cc53fc2c255017440..3d87e6830a3135d2d28a67a75138c135f62b8b35 100644
--- a/thunar/thunar-gobject-extensions.h
+++ b/thunar/thunar-gobject-extensions.h
@@ -37,9 +37,10 @@ G_BEGIN_DECLS;
 #define G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec) G_STMT_START{ (void)0; }G_STMT_END
 #endif
 
-void   thunar_g_initialize_transformations (void);
-gchar* thunar_g_strescape                  (const gchar *source);
-
+void     thunar_g_initialize_transformations (void);
+gchar*   thunar_g_strescape                  (const gchar *source);
+gboolean thunar_g_app_info_equal             (gpointer appinfo1,
+                                              gpointer appinfo2);
 G_END_DECLS;
 
 #endif /* !__THUNAR_GOBJECT_EXTENSIONS_H__ */
diff --git a/thunar/thunar-launcher.c b/thunar/thunar-launcher.c
index 8c1e999bab0a83acc13e3dfd0ee17b67f4013d7e..dbebd16423be12ceb28547e050ea43c4e0d032d5 100644
--- a/thunar/thunar-launcher.c
+++ b/thunar/thunar-launcher.c
@@ -828,7 +828,7 @@ thunar_launcher_open_files (ThunarLauncher *launcher,
 {
   GHashTable *applications;
   GAppInfo   *app_info;
-  GList      *file_list;
+  GList      *file_list = NULL;
   GList      *lp;
 
   /* allocate a hash table to associate applications to URIs. since GIO allocates
@@ -862,13 +862,25 @@ thunar_launcher_open_files (ThunarLauncher *launcher,
       if (G_LIKELY (app_info != NULL))
         {
           /* check if we have that application already */
-          file_list = g_hash_table_lookup (applications, app_info);
-          if (G_LIKELY (file_list != NULL))
+          /* Not possibly to check via g_hash_table_lookup directly, since that will only compare pointers */
+          GList *keys = g_hash_table_get_keys (applications);
+          for (GList *lp_keys = keys;  lp_keys != NULL; lp_keys = lp_keys->next)
             {
-              /* take a copy of the list as the old one will be dropped by the insert */
-              file_list = thunar_g_list_copy_deep (file_list);
+              if (thunar_g_app_info_equal (lp_keys->data, app_info))
+                {
+                  /* Reuse the existing appinfo instead of adding the new one to the list*/
+                  g_object_unref (app_info);
+                  app_info = g_object_ref (lp_keys->data);
+
+                  file_list = g_hash_table_lookup (applications, app_info);
+
+                  /* take a copy of the list as the old one will be dropped by the insert */
+                  file_list = thunar_g_list_copy_deep (file_list);
+                }
             }
 
+          g_list_free (keys);
+
           /* append our new URI to the list */
           file_list = thunar_g_list_append_deep (file_list, thunar_file_get_file (lp->data));