diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index bd01be0fe8981d75bc7b5b74fec63f47b2f9c27f..d1bdd8275c06ac3505e66243d65317be63a45c9b 100755
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -764,7 +764,7 @@ static void prep_email_sub_vars(struct ast_channel *ast, struct ast_vm_user *vmu
 	snprintf(passdata, passdatasize, "%d", msgnum);
 	pbx_builtin_setvar_helper(ast, "VM_MSGNUM", passdata);
 	pbx_builtin_setvar_helper(ast, "VM_MAILBOX", mailbox);
-	pbx_builtin_setvar_helper(ast, "VM_CALLERID", ast_callerid_merge(callerid, sizeof(callerid), cidname, cidnum));
+	pbx_builtin_setvar_helper(ast, "VM_CALLERID", ast_callerid_merge(callerid, sizeof(callerid), cidname, cidnum, "Unknown Caller"));
 	pbx_builtin_setvar_helper(ast, "VM_CIDNAME", (cidname ? cidname : "an unknown caller"));
 	pbx_builtin_setvar_helper(ast, "VM_CIDNUM", (cidnum ? cidnum : "an unknown caller"));
 	pbx_builtin_setvar_helper(ast, "VM_DATE", date);
@@ -1395,7 +1395,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int
 	chan->exten,
 	chan->priority,
 	chan->name,
-	ast_callerid_merge(callerid, sizeof(callerid), chan->cid.cid_name, chan->cid.cid_num),
+	ast_callerid_merge(callerid, sizeof(callerid), chan->cid.cid_name, chan->cid.cid_num, "Unknown"),
 	date, (long)time(NULL));
 					fclose(txt);
 				} else
diff --git a/callerid.c b/callerid.c
index b5b55e14f60070944d15ee401d26730f93e2332d..82b2400481084e082062329ea70057dc7be973ba 100755
--- a/callerid.c
+++ b/callerid.c
@@ -679,8 +679,10 @@ int ast_callerid_callwaiting_generate(unsigned char *buf, char *name, char *numb
 	return __ast_callerid_generate(buf, name, number, 1, codec);
 }
 
-char *ast_callerid_merge(char *buf, int bufsiz, const char *name, const char *num)
+char *ast_callerid_merge(char *buf, int bufsiz, const char *name, const char *num, const char *unknown)
 {
+	if (!unknown)
+		unknown = "<unknown>";
 	if (name && num)
 		snprintf(buf, bufsiz, "\"%s\" <%s>", name, num);
 	else if (name) 
@@ -688,7 +690,7 @@ char *ast_callerid_merge(char *buf, int bufsiz, const char *name, const char *nu
 	else if (num)
 		strncpy(buf, num, bufsiz - 1);
 	else
-		strncpy(buf, "<unknown>", bufsiz - 1);
+		strncpy(buf, unknown, bufsiz - 1);
 	return buf;
 }
 int ast_callerid_split(const char *buf, char *name, int namelen, char *num, int numlen)
diff --git a/include/asterisk/callerid.h b/include/asterisk/callerid.h
index 4008192c8a78b52d93caa6a7ba7340c808285f8b..a10b2cb7d1731187e0d920a91112ab7e175a0d10 100755
--- a/include/asterisk/callerid.h
+++ b/include/asterisk/callerid.h
@@ -165,7 +165,7 @@ extern int ast_isphonenumber(char *n);
 
 extern int ast_callerid_split(const char *src, char *name, int namelen, char *num, int numlen);
 
-extern char *ast_callerid_merge(char *buf, int bufsiz, const char *name, const char *num);
+extern char *ast_callerid_merge(char *buf, int bufsiz, const char *name, const char *num, const char *unknown);
 
 /*
  * Caller*ID and other GR-30 compatible generation