Hoe voorkom ik dat lange e-mails bijlagen worden?

Wanneer een build is voltooid, roept het bash-script:

nail -s "Build completed" $towhom < buildreport

Wanneer het buildrapport meer dan 2000 tekens lang is, komt het als een bijlage.

Waar kan men de drempel instellen voor de grootte van het lichaam dat een gehechtheid wordt?

2
De meeste linux-varianten van het e-mailprogramma zetten de inhoud van een bericht niet om in een bijlage - het arriveert gewoon zoals het is (ik heb verschillende multi-kilobyte-berichten die op deze manier zijn samengesteld). Is het mogelijk dat het buildreport-bestand zelf een mime-bericht is?
toegevoegd de auteur Petesh, de bron
Je bent veel te vaag geweest over wat je gebruikt - 'mail' kan een groot aantal applicaties zijn. Ik weet dat mutt automatisch kan converteren/coderen bij het verzenden als er 8-bits tekens in het bericht staan ​​- zijn er 8-bits tekens in het bericht, oftewel tekens ouder dan 127?
toegevoegd de auteur Petesh, de bron
Het buildrapport is gewoon de status van de build, met de "error" -instructies van de builds "grep'd". Dus wanneer de build vol fouten zit, kan deze uitvoer lang worden. Meestal komt het als platte tekst aan - omdat het een paar regels lang is.
toegevoegd de auteur Danny Schoemann, de bron
@Petesh Het voorbeeld gebruikt nagel , met een n . Dat is een heel specifieke mailer. Ik denk dat je op het goede spoor zit met karaktergevoeligheid, maar niet noodzakelijk 8-bit-waarden. De Google-hits krijg ik te horen dat nagel ook karakters als Backspace of Carriage Return in de invoer als illegaal beschouwt. Dit komt overeen met een korte samenvatting van de programmabron die vlaggen tekens onder 0x20 andere tekens die geen Newlines, tabs of FormFeeds zijn. Dus ik denk dat de volgende stap is dat Danny zoekt naar 8-bits of controle karakters in deze bijlagen.
toegevoegd de auteur ottomeister, de bron

1 antwoord

Based on the comment from ottomeister, There are a lot of reasons why the mail would be autoconverted to an attachment by nail

  • Individual lines are too long (>950 characters)
  • There are control characters in the message

Als het bericht UTF-8 is, lijkt het alsof het goed wordt geparseerd (maar dit is alleen gebaseerd op code van on-line, wat misschien niet is wat je gebruikt)

U kunt de inhoud van het bestand waarschijnlijk via een filter uitvoeren, bijvoorbeeld om alle niet-ascii tekens te verwijderen:

tr -cd '\11\12\15\40-\176' 

... maar dat zal alle UTF-8-tekens tegenwerken

Als u wilt dat de loginvoer op 1 aantal tekens wordt ingepakt, kunt u een perl-one-liner gebruiken zoals:

perl -e 'use Text::Wrap; print wrap("", "  ", );' < buildreport | nail -s "Build completed" $towhom
1
toegevoegd
Ik heb een perl one-liner toegevoegd om tekst in te pakken
toegevoegd de auteur Petesh, de bron
Ik denk dat het echte probleem kan zijn: "Individuele regels zijn te lang (> 950 tekens)". Ik heb je patch geïmplementeerd en "de tijd zal het leren". Bedankt.
toegevoegd de auteur Danny Schoemann, de bron
De oplossing die het beste werkt - na maanden van trail & error is dit ==> tr -d '\ 11 \ 15 \ 176'
toegevoegd de auteur Danny Schoemann, de bron
Voor de goede orde: we zijn er de afgelopen paar maanden een paar toegevoegd en nu hebben we: tr -d 'œ "" â € "\ 11 \ 15 \ 176 \ 200 \ 230'
toegevoegd de auteur Danny Schoemann, de bron