diff --git a/support/doctype/newsletter/newsletter.py b/support/doctype/newsletter/newsletter.py
index 79464c0..97b4779 100644
--- a/support/doctype/newsletter/newsletter.py
+++ b/support/doctype/newsletter/newsletter.py
@@ -18,6 +18,8 @@
 
 import webnotes
 import webnotes.utils
+from webnotes.utils import cstr
+from webnotes.model.doc import Document
 
 class DocType():
 	def __init__(self, d, dl):
@@ -46,8 +48,7 @@
 		}
 		
 	def send_emails(self):
-		"""send emails to leads and customers"""		
-		# TODO: create unsubscribed check in customer
+		"""send emails to leads and customers"""
 		if self.doc.email_sent:
 			webnotes.msgprint("""Newsletter has already been sent""", raise_exception=1)
 		
@@ -67,6 +68,14 @@
 				
 			if self.doc.blog_subscribers:
 				self.send("blog_subscribers", "Lead")
+				
+		if self.doc.email_list:
+			email_list = [cstr(email).strip() for email in self.doc.email_list.split(",")]
+			for email in email_list:
+				if not webnotes.conn.exists({"doctype": "Lead", "email_id": email}):
+					create_lead(email)
+			
+			self.send(email_list, "Lead")
 		
 		webnotes.conn.set(self.doc, "email_sent", 1)
 		webnotes.msgprint("""Scheduled to send to %s""" % \
@@ -78,9 +87,8 @@
 		recipients = self.doc.test_email_id.split(",")
 		from webnotes.utils.email_lib.bulk import send
 		send(recipients = recipients, sender = sender, 
-			subject = self.doc.subject, message = self.get_message(),
-			doctype = doctype, email_field = args["email_field"],
-			first_name_field = args["first_name_field"], last_name_field = "")
+			subject = self.doc.subject, message = self.doc.message,
+			doctype = doctype, email_field = args["email_field"])
 		webnotes.msgprint("""Scheduled to send to %s""" % self.doc.test_email_id)
 		
 	def get_recipients(self, key):
@@ -89,21 +97,47 @@
 		self.all_recipients += recipients
 		return recipients
 		
-	def get_message(self):
-		if not hasattr(self, "message"):
-			import markdown2
-			self.message = markdown2.markdown(self.doc.message)
-		return self.message
-		
 	def send(self, query_key, doctype):
 		webnotes.conn.auto_commit_on_many_writes = True
-		recipients = self.get_recipients(query_key)
+		if isinstance(query_key, basestring) and self.query_map.has_key(query_key):
+			recipients = self.get_recipients(query_key)
+		else:
+			recipients = query_key
 		sender = webnotes.utils.get_email_id(self.doc.owner)
 		args = self.dt_map[doctype]
-		self.send_count[doctype] = self.send_count.setdefault(doctype, 0) + len(recipients)
+		self.send_count[doctype] = self.send_count.setdefault(doctype, 0) + \
+			len(recipients)
 		
 		from webnotes.utils.email_lib.bulk import send
 		send(recipients = recipients, sender = sender, 
-			subject = self.doc.subject, message = self.get_message(),
-			doctype = doctype, email_field = args["email_field"],
-			first_name_field = args["first_name_field"], last_name_field = "")
\ No newline at end of file
+			subject = self.doc.subject, message = self.doc.message,
+			doctype = doctype, email_field = args["email_field"])
+			
+lead_naming_series = None
+def create_lead(email):
+	"""create a lead if it does not exist"""
+	lead = Document("Lead")
+	lead.fields["__islocal"] = 1
+	lead.lead_name = email
+	lead.email_id = email
+	lead.status = "Open"
+	lead.naming_series = lead_naming_series or get_lead_naming_series()
+	lead.company = webnotes.conn.get_default("company")
+	lead.source = "Email"
+	lead.save()
+	
+def get_lead_naming_series():
+	"""gets lead's default naming series"""
+	global lead_naming_series
+	naming_series_field = webnotes.get_doctype("Lead").get_field("naming_series")
+	if naming_series_field.default:
+		lead_naming_series = naming_series_field.default
+	else:
+		latest_naming_series = webnotes.conn.sql("""select naming_series
+			from `tabLead` order by creation desc limit 1""")
+		if latest_naming_series:
+			lead_naming_series = latest_naming_series[0][0]
+		else:
+			lead_naming_series = filter(None, naming_series_field.options.split("\n"))[0]
+	
+	return lead_naming_series
diff --git a/support/doctype/newsletter/newsletter.txt b/support/doctype/newsletter/newsletter.txt
index b32b875..11ee262 100644
--- a/support/doctype/newsletter/newsletter.txt
+++ b/support/doctype/newsletter/newsletter.txt
@@ -2,9 +2,9 @@
  {
   "owner": "Administrator", 
   "docstatus": 0, 
-  "creation": "2012-11-28 11:26:23", 
+  "creation": "2012-12-04 11:45:44", 
   "modified_by": "Administrator", 
-  "modified": "2012-12-03 17:10:41"
+  "modified": "2012-12-06 13:07:47"
  }, 
  {
   "autoname": "naming_series:", 
@@ -107,6 +107,15 @@
   "permlevel": 0
  }, 
  {
+  "description": "Comma separated list of email addresses", 
+  "colour": "White:FFF", 
+  "doctype": "DocField", 
+  "label": "Send to this list", 
+  "fieldname": "email_list", 
+  "fieldtype": "Text", 
+  "permlevel": 0
+ }, 
+ {
   "doctype": "DocField", 
   "label": "Newsletter Content", 
   "fieldname": "newsletter_content", 
@@ -126,9 +135,8 @@
   "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Message", 
-  "options": "Markdown", 
   "fieldname": "message", 
-  "fieldtype": "Code", 
+  "fieldtype": "Text Editor", 
   "reqd": 0, 
   "permlevel": 0
  }, 
diff --git a/website/blog.py b/website/blog.py
index 0e13107..9491e25 100644
--- a/website/blog.py
+++ b/website/blog.py
@@ -119,8 +119,6 @@
 	send(recipients=list(set(commentors + [blog['owner']])), 
 		doctype='Comment', 
 		email_field='comment_by', 
-		first_name_field="comment_by_fullname",
-		last_name_field="NA", 
 		subject='New Comment on Blog: ' + blog['title'], 
 		message='%(comment)s<p>By %(comment_by_fullname)s</p>' % args)
 	
diff --git a/website/doctype/blog/blog.py b/website/doctype/blog/blog.py
index 56f6c86..92ee974 100644
--- a/website/doctype/blog/blog.py
+++ b/website/doctype/blog/blog.py
@@ -44,8 +44,7 @@
 
 		# send the blog
 		send(recipients = recipients, doctype='Lead', email_field='email_id',
-			first_name_field = 'lead_name', last_name_field="", subject=self.doc.title,
-			message = markdown(content))
+			subject=self.doc.title, message = markdown(content))
 		
 		webnotes.conn.set(self.doc, 'email_sent', 1)
 		webnotes.msgprint("""Scheduled to send to %s subscribers""" % len(recipients))
