diff --git a/erpnext/templates/utils.py b/erpnext/templates/utils.py
index c1405c3..81dbdc9 100644
--- a/erpnext/templates/utils.py
+++ b/erpnext/templates/utils.py
@@ -9,47 +9,50 @@
 
 @frappe.whitelist(allow_guest=True)
 def send_message(subject="Website Query", message="", sender="", status="Open"):
-	from frappe.www.contact import send_message as website_send_message
-	lead = customer = None
+    from frappe.www.contact import send_message as website_send_message
+    lead = customer = None
 
-	website_send_message(subject, message, sender)
+    website_send_message(subject, message, sender)
 
-	customer = frappe.db.get_value('Contact', dict(email_id=sender), 'customer')
-	if not customer:
-		lead = frappe.db.get_value('Lead', dict(email_id=sender))
-	if not lead:
-		new_lead = frappe.get_doc(dict(
-			doctype='Lead',
-			email_id = sender,
-			lead_name = sender.split('@')[0].title()
-		)).insert(ignore_permissions=True)
+    customer = frappe.db.sql("""select distinct dl.link_name from `tabDynamic Link` dl 
+        left join `tabContact` c on dl.parent=c.name where dl.link_doctype='Customer' 
+        and c.email_id='{email_id}'""".format(email_id=sender))
 
-	opportunity = frappe.get_doc(dict(
-		doctype='Opportunity',
-		enquiry_from = 'Customer' if customer else 'Lead',
-		status = 'Open',
-		title = subject,
-		to_discuss=message
-	))
+    if not customer:
+    	lead = frappe.db.get_value('Lead', dict(email_id=sender))
+    if not lead:
+    	new_lead = frappe.get_doc(dict(
+    		doctype='Lead',
+    		email_id = sender,
+    		lead_name = sender.split('@')[0].title()
+    	)).insert(ignore_permissions=True)
 
-	if customer:
-		opportunity.customer = customer
-	elif lead:
-		opportunity.lead = lead
-	else:
-		opportunity.lead = new_lead.name
+    opportunity = frappe.get_doc(dict(
+    	doctype='Opportunity',
+    	enquiry_from = 'Customer' if customer else 'Lead',
+    	status = 'Open',
+    	title = subject,
+    	to_discuss=message
+    ))
 
-	opportunity.insert(ignore_permissions=True)
+    if customer:
+    	opportunity.customer = customer[0][0]
+    elif lead:
+    	opportunity.lead = lead
+    else:
+    	opportunity.lead = new_lead.name
 
-	comm = frappe.get_doc({
-		"doctype":"Communication",
-		"subject": subject,
-		"content": message,
-		"sender": sender,
-		"sent_or_received": "Received",
-		'reference_doctype': 'Opportunity',
-		'reference_name': opportunity.name
-	})
-	comm.insert(ignore_permissions=True)
+    opportunity.insert(ignore_permissions=True)
 
-	return "okay"
+    comm = frappe.get_doc({
+    	"doctype":"Communication",
+    	"subject": subject,
+    	"content": message,
+    	"sender": sender,
+    	"sent_or_received": "Received",
+    	'reference_doctype': 'Opportunity',
+    	'reference_name': opportunity.name
+    })
+    comm.insert(ignore_permissions=True)
+
+    return "okay"
