diff --git a/calendar/gui/dialogs/send-comp.c b/calendar/gui/dialogs/send-comp.c
index 70dd372..9be9406 100644
--- a/calendar/gui/dialogs/send-comp.c
+++ b/calendar/gui/dialogs/send-comp.c
@@ -31,6 +31,7 @@
 #include <glib/gi18n-lib.h>
 
 #include "e-util/e-util.h"
+#include "gui/itip-utils.h"
 
 static gboolean
 component_has_new_attendees (ECalComponent *comp)
@@ -44,60 +45,6 @@ component_has_new_attendees (ECalComponent *comp)
 }
 
 static gboolean
-component_has_recipients (ECalComponent *comp)
-{
-	GSList *attendees = NULL;
-	ECalComponentAttendee *attendee;
-	ECalComponentOrganizer organizer;
-	gboolean res = FALSE;
-
-	g_return_val_if_fail (comp != NULL, FALSE);
-
-	e_cal_component_get_organizer (comp, &organizer);
-	e_cal_component_get_attendee_list (comp, &attendees);
-
-	if (!attendees) {
-		if (organizer.value && e_cal_component_get_vtype (comp) == E_CAL_COMPONENT_JOURNAL) {
-			/* memos store recipients in an extra property */
-			icalcomponent *icalcomp;
-			icalproperty *icalprop;
-
-			icalcomp = e_cal_component_get_icalcomponent (comp);
-
-			for (icalprop = icalcomponent_get_first_property (icalcomp, ICAL_X_PROPERTY);
-			     icalprop != NULL;
-			     icalprop = icalcomponent_get_next_property (icalcomp, ICAL_X_PROPERTY)) {
-				const gchar *x_name;
-
-				x_name = icalproperty_get_x_name (icalprop);
-
-				if (g_str_equal (x_name, "X-EVOLUTION-RECIPIENTS")) {
-					const gchar *str_recipients = icalproperty_get_x (icalprop);
-
-					res = str_recipients && g_ascii_strcasecmp (organizer.value, str_recipients) != 0;
-					break;
-				}
-			}
-		}
-
-		return res;
-	}
-
-	if (g_slist_length (attendees) > 1 || !e_cal_component_has_organizer (comp)) {
-		e_cal_component_free_attendee_list (attendees);
-		return TRUE;
-	}
-
-	attendee = attendees->data;
-
-	res = organizer.value && attendee && attendee->value && g_ascii_strcasecmp (organizer.value, attendee->value) != 0;
-
-	e_cal_component_free_attendee_list (attendees);
-
-	return res;
-}
-
-static gboolean
 have_nonprocedural_alarm (ECalComponent *comp)
 {
 	GList *uids, *l;
@@ -174,7 +121,7 @@ send_component_dialog (GtkWindow *parent,
 	if (strip_alarms)
 		*strip_alarms = TRUE;
 
-	if (e_cal_client_check_save_schedules (client) || !component_has_recipients (comp))
+	if (e_cal_client_check_save_schedules (client) || !itip_component_has_recipients (comp))
 		return FALSE;
 
 	vtype = e_cal_component_get_vtype (comp);
@@ -263,7 +210,7 @@ send_dragged_or_resized_component_dialog (GtkWindow *parent,
 	if (strip_alarms)
 		*strip_alarms = TRUE;
 
-	if (e_cal_client_check_save_schedules (client) || !component_has_recipients (comp))
+	if (e_cal_client_check_save_schedules (client) || !itip_component_has_recipients (comp))
 		save_schedules = TRUE;
 
 	vtype = e_cal_component_get_vtype (comp);
diff --git a/calendar/gui/e-calendar-view.c b/calendar/gui/e-calendar-view.c
index 9344d9f..61a8885 100644
--- a/calendar/gui/e-calendar-view.c
+++ b/calendar/gui/e-calendar-view.c
@@ -1830,6 +1830,9 @@ e_calendar_view_send (ECalendarView *cal_view,
 	ECalModel *model;
 	ECalComponent *send_comp = NULL;
 
+	if (!itip_component_has_recipients (comp))
+		return;
+
 	if (mod == CALOBJ_MOD_ALL && e_cal_component_is_instance (comp)) {
 		/* Ensure we send the master object, not the instance only */
 		icalcomponent *icalcomp = NULL;
diff --git a/calendar/gui/itip-utils.c b/calendar/gui/itip-utils.c
index 440ae8f..02f346d 100644
--- a/calendar/gui/itip-utils.c
+++ b/calendar/gui/itip-utils.c
@@ -2285,3 +2285,57 @@ is_icalcomp_valid (icalcomponent *icalcomp)
 
 	return TRUE;
 }
+
+gboolean
+itip_component_has_recipients (ECalComponent *comp)
+{
+	GSList *attendees = NULL;
+	ECalComponentAttendee *attendee;
+	ECalComponentOrganizer organizer;
+	gboolean res = FALSE;
+
+	g_return_val_if_fail (comp != NULL, FALSE);
+
+	e_cal_component_get_organizer (comp, &organizer);
+	e_cal_component_get_attendee_list (comp, &attendees);
+
+	if (!attendees) {
+		if (organizer.value && e_cal_component_get_vtype (comp) == E_CAL_COMPONENT_JOURNAL) {
+			/* memos store recipients in an extra property */
+			icalcomponent *icalcomp;
+			icalproperty *icalprop;
+
+			icalcomp = e_cal_component_get_icalcomponent (comp);
+
+			for (icalprop = icalcomponent_get_first_property (icalcomp, ICAL_X_PROPERTY);
+			     icalprop != NULL;
+			     icalprop = icalcomponent_get_next_property (icalcomp, ICAL_X_PROPERTY)) {
+				const gchar *x_name;
+
+				x_name = icalproperty_get_x_name (icalprop);
+
+				if (g_str_equal (x_name, "X-EVOLUTION-RECIPIENTS")) {
+					const gchar *str_recipients = icalproperty_get_x (icalprop);
+
+					res = str_recipients && g_ascii_strcasecmp (organizer.value, str_recipients) != 0;
+					break;
+				}
+			}
+		}
+
+		return res;
+	}
+
+	if (g_slist_length (attendees) > 1 || !e_cal_component_has_organizer (comp)) {
+		e_cal_component_free_attendee_list (attendees);
+		return TRUE;
+	}
+
+	attendee = attendees->data;
+
+	res = organizer.value && attendee && attendee->value && g_ascii_strcasecmp (organizer.value, attendee->value) != 0;
+
+	e_cal_component_free_attendee_list (attendees);
+
+	return res;
+}
diff --git a/calendar/gui/itip-utils.h b/calendar/gui/itip-utils.h
index 18d2dca..5c3ed3b 100644
--- a/calendar/gui/itip-utils.h
+++ b/calendar/gui/itip-utils.h
@@ -95,6 +95,7 @@ gboolean	reply_to_calendar_comp		(ESourceRegistry *registry,
 						 icalcomponent *zones,
 						 GSList *attachments_list);
 gboolean	is_icalcomp_valid		(icalcomponent *icalcomp);
+gboolean	itip_component_has_recipients	(ECalComponent *comp);
 
 G_END_DECLS
 
