Allow variable substitution in from string (bug #1741)
authorMark Spencer <markster@digium.com>
Sun, 30 May 2004 03:03:19 +0000 (03:03 +0000)
committerMark Spencer <markster@digium.com>
Sun, 30 May 2004 03:03:19 +0000 (03:03 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3109 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index 82621fd..9ca3c93 100755 (executable)
@@ -842,10 +842,21 @@ static int sendmail(char *srcemail, struct ast_vm_user *vmu, int msgnum, char *m
                        ast_localtime(&t,&tm,NULL);
                strftime(date, sizeof(date), "%a, %d %b %Y %H:%M:%S %z", &tm);
                fprintf(p, "Date: %s\n", date);
-               
-               if (*fromstring)
-                       fprintf(p, "From: %s <%s>\n", fromstring, who);
-               else
+
+               if (*fromstring) {
+                       struct ast_channel *ast = ast_channel_alloc(0);
+                       if (ast) {
+                               char *passdata;
+                               int vmlen = strlen(fromstring)*3 + 200;
+                               if ((passdata = alloca(vmlen))) {
+                                       memset(passdata, 0, vmlen);
+                                       prep_email_sub_vars(ast,vmu,msgnum + 1,mailbox,callerid,dur,date,passdata);
+                                       pbx_substitute_variables_helper(ast,fromstring,passdata,vmlen);
+                                       fprintf(p, "From: %s <%s>\n",passdata,who);
+                               } else ast_log(LOG_WARNING, "Cannot allocate workspace for variable substitution\n");
+                               ast_channel_free(ast);
+                       } else ast_log(LOG_WARNING, "Cannot allocate the channel for variables substitution\n");
+               } else
                        fprintf(p, "From: Asterisk PBX <%s>\n", who);
                fprintf(p, "To: %s <%s>\n", vmu->fullname, vmu->email);