diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 5814e56..99f17c8 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -8,7 +8,6 @@
 from webnotes.utils import add_days, cint, cstr, date_diff, flt, getdate, nowdate, \
 	get_first_day, get_last_day
 
-from webnotes.utils.email_lib import sendmail
 from webnotes.utils import comma_and, get_url
 from webnotes.model.doc import make_autoname
 from webnotes.model.bean import getlist
@@ -689,7 +688,7 @@
 					webnotes.conn.begin()
 					webnotes.conn.sql("update `tabSales Invoice` set \
 						convert_into_recurring_invoice = 0 where name = %s", ref_invoice)
-					notify_errors(ref_invoice, ref_wrapper.doc.owner)
+					notify_errors(ref_invoice, ref_wrapper.doc.customer, ref_wrapper.doc.owner)
 					webnotes.conn.commit()
 
 				exception_list.append(webnotes.get_traceback())
@@ -738,101 +737,23 @@
 	
 def send_notification(new_rv):
 	"""Notify concerned persons about recurring invoice generation"""
-	subject = "Invoice : " + new_rv.doc.name
-
-	com = new_rv.doc.company
-
-	hd = '''<div><h2>%s</h2></div>
-			<div><h3>Invoice: %s</h3></div>
-			<table cellspacing= "5" cellpadding="5"  width = "100%%">
-				<tr>
-					<td width = "50%%"><b>Customer</b><br>%s<br>%s</td>
-					<td width = "50%%">Invoice Date	   : %s<br>Invoice Period : %s to %s <br>Due Date	   : %s</td>
-				</tr>
-			</table>
-		''' % (com, new_rv.doc.name, new_rv.doc.customer_name, new_rv.doc.address_display, getdate(new_rv.doc.posting_date).strftime("%d-%m-%Y"), \
-		getdate(new_rv.doc.invoice_period_from_date).strftime("%d-%m-%Y"), getdate(new_rv.doc.invoice_period_to_date).strftime("%d-%m-%Y"),\
-		getdate(new_rv.doc.due_date).strftime("%d-%m-%Y"))
 	
-	
-	tbl = '''<table border="1px solid #CCC" width="100%%" cellpadding="0px" cellspacing="0px">
-				<tr>
-					<td width = "15%%" bgcolor="#CCC" align="left"><b>Item</b></td>
-					<td width = "40%%" bgcolor="#CCC" align="left"><b>Description</b></td>
-					<td width = "15%%" bgcolor="#CCC" align="center"><b>Qty</b></td>
-					<td width = "15%%" bgcolor="#CCC" align="center"><b>Rate</b></td>
-					<td width = "15%%" bgcolor="#CCC" align="center"><b>Amount</b></td>
-				</tr>
-		'''
-	for d in getlist(new_rv.doclist, 'entries'):
-		tbl += '<tr><td>' + cstr(d.item_code) +'</td><td>' + cstr(d.description) + \
-			'</td><td>' + cstr(d.qty) +'</td><td>' + cstr(d.basic_rate) + \
-			'</td><td>' + cstr(d.amount) +'</td></tr>'
-	tbl += '</table>'
-
-	totals ='''<table cellspacing= "5" cellpadding="5"  width = "100%%">
-					<tr>
-						<td width = "50%%"></td>
-						<td width = "50%%">
-							<table width = "100%%">
-								<tr>
-									<td width = "50%%">Net Total: </td><td>%s </td>
-								</tr><tr>
-									<td width = "50%%">Total Tax: </td><td>%s </td>
-								</tr><tr>
-									<td width = "50%%">Grand Total: </td><td>%s</td>
-								</tr><tr>
-									<td width = "50%%">In Words: </td><td>%s</td>
-								</tr>
-							</table>
-						</td>
-					</tr>
-					<tr><td>Terms and Conditions:</td></tr>
-					<tr><td>%s</td></tr>
-				</table>
-			''' % (new_rv.doc.net_total,
-			new_rv.doc.other_charges_total,new_rv.doc.grand_total,
-			new_rv.doc.in_words,new_rv.doc.terms)
-
-
-	msg = hd + tbl + totals
-	
-	sendmail(new_rv.doc.notification_email_address, subject=subject, msg = msg)
+	from webnotes.core.doctype.print_format.print_format import get_html
+	webnotes.sendmail(new_rv.doc.notification_email_address, 
+		subject="New Invoice : " + new_rv.doc.name, 
+		message = get_html(new_rv.doc, new_rv.doclist, "SalesInvoice"))
 		
-def notify_errors(inv, owner):
-	import webnotes
-		
-	exception_msg = """
-		Dear User,
-
-		An error occured while creating recurring invoice from %s (at %s).
-
-		May be there are some invalid email ids mentioned in the invoice.
-
-		To stop sending repetitive error notifications from the system, we have unchecked
-		"Convert into Recurring" field in the invoice %s.
-
-
-		Please correct the invoice and make the invoice recurring again. 
-
-		<b>It is necessary to take this action today itself for the above mentioned recurring invoice \
-		to be generated. If delayed, you will have to manually change the "Repeat on Day of Month" field \
-		of this invoice for generating the recurring invoice.</b>
-
-		Regards,
-		Administrator
-		
-	""" % (inv, get_url(), inv)
-	subj = "[Urgent] Error while creating recurring invoice from %s" % inv
-
+def notify_errors(inv, customer, owner):
 	from webnotes.profile import get_system_managers
-	recipients = get_system_managers()
-	owner_email = webnotes.conn.get_value("Profile", owner, "email")
-	if not owner_email in recipients:
-		recipients.append(owner_email)
-
-	assign_task_to_owner(inv, exception_msg, recipients)
-	sendmail(recipients, subject=subj, msg = exception_msg)
+	
+	webnotes.sendmail(recipients=get_system_managers() + [webnotes.conn.get_value("Profile", owner, "email")],
+		subject="[Urgent] Error while creating recurring invoice for %s" % inv,
+		message = webnotes.get_template("template/emails/recurring_invoice_failed.html").render({
+			"name": inv,
+			"customer": customer
+		})
+	
+	assign_task_to_owner(inv, "Recurring Invoice Failed", recipients)
 
 def assign_task_to_owner(inv, msg, users):
 	for d in users:
diff --git a/erpnext/templates/emails/recurring_invoice_failed.html b/erpnext/templates/emails/recurring_invoice_failed.html
new file mode 100644
index 0000000..dd3b913
--- /dev/null
+++ b/erpnext/templates/emails/recurring_invoice_failed.html
@@ -0,0 +1,12 @@
+<h2>Recurring Invoice Failed</h2>
+
+<p>An error occured while creating recurring invoice <b>{{ name }}</b> for <b>{{ customer }}</b>.</p>
+<p>This could be because of some invalid email ids in the invoice.</p>
+<p>To stop sending repetitive error notifications from the system, we have unchecked
+"Convert into Recurring" field in the invoice {{ name }}.</p>
+<p><b>Please correct the invoice and make the invoice recurring again.</b></p>
+<hr>
+<p><b>It is necessary to take this action today itself for the above mentioned recurring invoice \
+to be generated. If delayed, you will have to manually change the "Repeat on Day of Month" field \
+of this invoice for generating the recurring invoice.</b></p>
+<p>[This email is autogenerated]</p>
