lima-city: Webhosting, Domains und Cloud
1 Pluspunkt 0 Minuspunkte

Wenn ich eine Mail mit ssmtp versende und das Subject als String angebe steht alles (der ganze Text) im Subject drin. Die Zeilenumbrüche werden einfach ignoriert.

echo -e "Subject: Test\n\nTest message from $(hostname)" | ssmtp -vvv dummy@domain.local

In der Mail steht genau das im Subject

Test\n\nTest message from vie-t-srv-gisdb23

Im Body steht aber nichts.

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Du kannst printf statt echo verwenden. 

printf "Subject: Test\n\nTest message from $(hostname)" | ssmtp -vvv dummy@domain.local

Innerhalb der Anführungszeichen bleibt \n zunächst eine Folge aus Backslash und n. Erst echo oder printf muss sie interpretieren. Dein Ergebnis zeigt, dass die verwendete echo Implementierung \n nicht als Escapesequenz auswertet sondern wörtlich ausgibt. echo ist historisch nicht einheitlich definiert. POSIX erklärt das Ergebnis von echo sogar ausdrücklich als implementationsabhängig, sobald ein Argument Backslashes enthält. 

Bei printf ist die Interpretation von \n im Formatstring klar definiert. Die POSIX-Spezifikation schreibt für printf die Unterstützung von Escape-Sequenzen wie \n, \r und \t ausdrücklich vor.

von (822 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2,628 Fragen

3,152 Antworten

1,054 Nutzer