Como colocar nova linha (\ n) no texto de uma auto resposta no exim?

3

Eu configurei o exim para obter texto de resposta automática a partir de um banco de dados sqlite. Ele está enviando a auto-resposta muito bem, com a exceção de que não consigo obter novas linhas na resposta automática.

Esta é a linha no transporte:

text     = ${lookup sqlite{SQLDB \
              SELECT body FROM autoreply WHERE \
                (username='$local_part' AND domain='$domain') \
              AND (sender ='$sender_address' or sender ='$reply_address' or sender ='*') \
              AND enabled=1 \
              AND (valid_from <= strftime('%s', 'now') OR valid_from IS NULL) \
              AND (valid_to >= strftime('%s', 'now') OR valid_to IS NULL) \
              LIMIT 1\
            }\
          }

Como mencionei, isso está retornando o texto correto, o e-mail contém apenas os caracteres reais \ n em vez de novas linhas.

Eu tentei coisas como \\ n e nada funciona.

Estou pesquisando on-line há um bom tempo e não consigo encontrar nada sobre isso ou algo que diga que isso não pode ser feito.

    
por mhost 13.03.2014 / 22:27

1 resposta

1

Suponho que você tenha armazenado as novas linhas como seqüências de escape no banco de dados, o que significa a string " \n " em vez do caractere real da nova linha. A consulta sqlite retornará exatamente isso, e o Exim ficará feliz em colocar a string como está na mensagem de resposta automática. A razão é que a pesquisa já é uma expansão de string; você poderia usá-lo como parte de outra string, em cujo caso o Exim o substituiria pelo que estiver no banco de dados. O Exim não expandirá pela segunda vez.

Para que o Exim expanda os literais de caracteres no resultado da pesquisa, você precisa dizer para fazer isso explicitamente, cercando toda a pesquisa com um operador expand , assim:

text = ${expand:${lookup sqlite{SQLDB \
                                SELECT body FROM autoreply WHERE \
                                ...
       }}}

O Exim, então, pegará a string retornada pela pesquisa e executará a expansão nela. Para detalhes, consulte a especificação do Exim , Capítulo 11 , Seção 6 , com relação ao operador de expansão e Capítulo 9 sobre pesquisas de arquivos e bancos de dados.

    
por 22.07.2014 / 20:14