diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py
index 12524cf57b912ac523c1961737e2d555b354883d..cb5a780def0c4d5ee45bc4223ac06ad355310f33 100644
--- a/src/common/zeroconf/connection_zeroconf.py
+++ b/src/common/zeroconf/connection_zeroconf.py
@@ -43,6 +43,7 @@ import gobject
 
 from common.connection import CommonConnection
 from common import gajim
+from common import ged
 from common.zeroconf import client_zeroconf
 from common.zeroconf import zeroconf
 from connection_handlers_zeroconf import *
@@ -64,6 +65,9 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
         CommonConnection.__init__(self, name)
         self.is_zeroconf = True
 
+        gajim.ged.register_event_handler('message-outgoing', ged.OUT_CORE,
+            self._nec_message_outgoing)
+
     def get_config_values_or_default(self):
         """
         Get name, host, port from config, or create zeroconf account with default
@@ -367,6 +371,47 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
                 forward_from=forward_from, form_node=form_node,
                 original_message=original_message, delayed=delayed, callback=cb)
 
+    def _nec_message_outgoing(self, obj):
+        if obj.account != self.name:
+            return
+
+        def on_send_ok(msg_id):
+            gajim.nec.push_incoming_event(MessageSentEvent(None, conn=self,
+                jid=obj.jid, message=obj.message, keyID=obj.keyID))
+            if obj.callback:
+                obj.callback(obj.msg_id, *obj.callback_args)
+
+            if not obj.is_loggable:
+                return
+            self.log_message(obj.jid, obj.message, obj.forward_from,
+                obj.session, obj.original_message, obj.subject, obj.type_)
+
+        def on_send_not_ok(reason):
+            reason += ' ' + _('Your message could not be sent.')
+            gajim.nec.push_incoming_event(MessageErrorEvent(None, conn=self,
+                fjid=obj.jid, error_code=-1, error_msg=reason, msg=None,
+                time_=None, session=obj.session))
+
+        def cb(jid, msg, keyID, forward_from, session, original_message, subject,
+        type_, msg_iq, xhtml):
+            ret = self.connection.send(msg_iq, msg is not None, on_ok=on_send_ok,
+                    on_not_ok=on_send_not_ok)
+
+            if ret == -1:
+                # Contact Offline
+                gajim.nec.push_incoming_event(MessageErrorEvent(None, conn=self,
+                    fjid=jid, error_code=-1, error_msg=_(
+                    'Contact is offline. Your message could not be sent.'),
+                    msg=None, time_=None, session=session))
+
+        self._prepare_message(obj.jid, obj.message, obj.keyID, type_=obj.type_,
+            subject=obj.subject, chatstate=obj.chatstate, msg_id=obj.msg_id,
+            composing_xep=obj.composing_xep, resource=obj.resource,
+            user_nick=obj.user_nick, xhtml=obj.xhtml, label=obj.label,
+            session=obj.session, forward_from=obj.forward_from,
+            form_node=obj.form_node, original_message=obj.original_message,
+            delayed=obj.delayed, callback=cb)
+
     def send_stanza(self, stanza):
         # send a stanza untouched
         if not self.connection: