Remover o assunto do e-mail recebido?

Prezado fórum,

Estou coletando e-mails de uma lista de distribuição para o Discourse, e os assuntos dos e-mails geram novos tópicos. Isso está funcionando bem.
Agora preciso remover a primeira parte do assunto, pois se trata apenas do nome da lista de distribuição: “[lista de distribuição] tópico real”, e quero extrair apenas o “tópico real”.

Ainda não encontrei a solução correta online — alguém tem alguma sugestão?
Obrigado,
Marko

Eu pensei que havia um código para remover isso, mas faz 3 anos que não faço uma migração de mbox.

O título é definido em ...mbox/importer.rb:

    def map_first_post(row)
      mapped = map_post(row)
      mapped[:category] = category_id_from_imported_category_id(row['category'])
      mapped[:title] = row['subject'].strip[0...255]
      mapped
    end

Você pode alterar a linha do título para algo como:

  mapped[:title] = row['subject'].strip[0...255].gsub(/^[.*?\]/,"")

Eu raramente acerto expressões regulares na primeira tentativa, então você vai querer fazer alguns testes (e talvez experimentar em http://rubular.com/).

Obrigado por apontar isso.
Acho que a expressão regular seria algo como /^\[(.*?)\]\s/ para corresponder a tudo no início da linha, como "[…] ".

Você poderia, por favor, detalhar onde encontrar o importer.rb na minha instalação (usei o guia de instalação “em menos de 30 minutos” em uma VM local do Ubuntu)?

Se você estiver dentro do container

cd /var/discourse
./launcher enter app

de onde quer que esteja executando o script, tente:

find . -name importer.rb

Alterei o arquivo mbox/importer.rb usando a expressão regular corrigida e também tentei uma string de substituição estática, sem nenhuma mudança nos tópicos recebidos.

Vou tentar esclarecer:

  • Inscrevi o endereço de e-mail da categoria do Discourse relacionada (endereço personalizado para e-mails recebidos; √ a categoria espelha a lista de distribuição) na lista de distribuição existente.
  • O Discourse recebe esses e-mails e cria os tópicos correspondentes.
  • Como a lista de distribuição adiciona um prefixo ao assunto do e-mail, quero removê-lo antes que o Discourse crie o tópicos.

Minhas perguntas agora:

  1. ./script/import_scripts/mbox/importer.rb é o importador correto?
  2. A sintaxe .gsub("remove this prefix ","") está correta?

Tentei:
mapped[:title] = row['subject'].strip[0...255].gsub(/^\[(.*?)\]\s/,"")

Até agora, nada mudou…
Obrigado novamente.

O importador não tem nada a ver com isso. Você precisará de um plugin (não deve ser mais do que algumas linhas de código) ou de um consumidor para o webhook topic_created, que poderia usar a API para modificar o título do tópico.

Eu entendi tudo errado. Pensei que você tivesse arquivos mbox que estivesse importando. Tudo o que eu disse está errado para a sua situação. Desculpe.