/ usr / bin / mail không diễn giải các dòng mới


0

Tôi có một vấn đề kỳ lạ khi đường ống một con mèo để gửi thư.

Tôi có một tệp văn bản đơn giản được biên dịch từ một tập lệnh, đó là một báo cáo về những thư mục đã được sao chép trong tập lệnh. Sau đó tôi muốn gửi báo cáo này qua email cho các quản trị viên hệ thống.

Kịch bản tạo báo cáo tốt. Khi tôi chạy

cat /tmp/report.txt

Tôi nhận được đầu ra được định dạng độc đáo với tất cả các ngắt dòng tôi mong đợi.

Copy report. Started on Mon Sep 28 13:37:57 BST 2015

Run in progress?: Yes

3 directories were copied.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)
Copy completed on 2015.09.28 at 13:37:57
Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:37:59
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14)
Copy completed on 2015.09.28 at 13:37:59
Copy info:
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k
0inputs+355896outputs (0major+152minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:38:01
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18)
Copy completed on 2015.09.28 at 13:38:01
Copy info:
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k
0inputs+355896outputs (0major+151minor)pagefaults 0swaps

Tuy nhiên, vì một số lý do khi tôi chuyển cái này sang mail

cat /tmp/report.txt | mail -s "Copy Report" recipient@domain.com

hoặc là

mail -s "Copy Report" recipient@domain.com < /tmp/report.txt

Đây là email tôi nhận được.

Copy report. Started on Mon Sep 28 13:37:57 BST 2015

Run in progress?: Yes

3 directories were copied.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Copy completed on 2015.09.28 at 13:37:57 Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:37:59
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14) Copy completed on 2015.09.28 at 13:37:59 Copy info:
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k
0inputs+355896outputs (0major+152minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:38:01
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18) Copy completed on 2015.09.28 at 13:38:01 Copy info:
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k
0inputs+355896outputs (0major+151minor)pagefaults 0swaps

Đưa cái gì? Một số ngắt dòng là có, một số không! Tôi đã thử chỉnh sửa tệp ở cả vi và nano và đảm bảo ngắt dòng thực sự ở đó. Cũng xóa chúng và làm cho chúng một lần nữa và đầu ra email vẫn giữ nguyên.

Sử dụng / usr / bin / mail

Thêm thông tin:

Tôi tự tay gõ những thứ sau vào một tệp văn bản và thực hiện cùng một đường ống để gửi thư. Tôi đặt từ "Sao chép" ở đầu mỗi dòng.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)
Copy completed on 2015.09.28 at 13:37:57
Copy info:
Copy 0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
Copy 0inputs+355896outputs (0major+150minor)pagefaults 0swaps

Đây là những gì tôi nhận được trong email:

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Copy completed on 2015.09.28 at 13:37:57 Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps

Sau đó tôi đã xóa tất cả các từ "Sao chép". Đây là những gì tôi nhận được trong email.

Started on 2015.09.29 at 09:46:49
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Completed on 2015.09.29 at 09:46:49
Info:
0.00user 0.46system 0:01.98elapsed 23%CPU (0avgtext+0avgdata 2552maxresident)k
0inputs+355896outputs (0major+149minor)pagefaults 0swaps

Nghĩ rằng nó có thể là một cái gì đó để làm với từ Sao chép nhưng tôi vẫn có một dòng không ngắt dòng!

Đây là đầu ra của cat -vet /tmp/report.txt

Copy report. Started on Mon Sep 28 13:37:57 BST 2015$
$
Run in progress?: Yes$
$
$
$
3 directories were copied.$
$
$
Copy started on 2015.09.28 at 13:37:57$
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)$
Copy completed on 2015.09.28 at 13:37:57$
Copy info:$
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k$
0inputs+355896outputs (0major+150minor)pagefaults 0swaps$
$
$
Copy started on 2015.09.28 at 13:37:59$
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14)$
Copy completed on 2015.09.28 at 13:37:59$
Copy info:$
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k$
0inputs+355896outputs (0major+152minor)pagefaults 0swaps$
$
$
Copy started on 2015.09.28 at 13:38:01$
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18)$
Copy completed on 2015.09.28 at 13:38:01$
Copy info:$
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k$
0inputs+355896outputs (0major+151minor)pagefaults 0swaps$

Bạn có đang sử dụng CRLF để ngắt dòng trong email theo RFC 5322 phần 2.1 không?
Andrew Morton

Phiên bản linux nào bạn chạy? Phiên bản / usr / bin / mail nào bạn đang chạy? Đây có phải là một chuyển hướng đến một cái gì đó khác như Ubuntu đã được chuyển hướng đến Hairloom-mailx?
ojs

Câu trả lời:


2

Có lẽ bạn đang bị tính năng "format = Flowed" được giới thiệu từ lâu, xem rfc2646 .

Bạn có thể sẽ tìm thấy một số dòng có một ký tự không gian dấu. Điều này được một số người đọc thư hiểu là "nối dòng này với dòng tiếp theo và sau đó làm lại gói văn bản cho các dòng dòng phù hợp với chiều rộng màn hình".

Thông thường, điều này chỉ nên được thực hiện nếu thư của bạn có Content-Typetùy chọn tiêu đề format=flowed, nhưng ngày nay, do đám đông không phải Unix, điều này đã trở thành mặc định.

Sử dụng cat -vettrên dữ liệu của bạn để xem nếu có dấu cách. Sử dụng sed 's/ \+$//'để loại bỏ chúng.


Tôi không thấy bất kỳ dấu cách nào cũng như các ký tự điều khiển không trả về dữ liệu trong dữ liệu của bạn, vì vậy không có lý do thực sự nào cho việc gửi thư của bạn giả mạo nó.

Lần thử cuối cùng: như Andrzej A. Filip đã đề xuất, thay vì mailđi thẳng tới sendmail. Điều này sẽ cho phép bạn thêm một tiêu đề loại nội dung rõ ràng. Ví dụ:

(echo 'Subject: Copy Report'
 echo 'Content-Type: text/plain; charset=us-ascii; format=fixed'
 echo
 cat /tmp/report.txt
) |  sendmail recipient@domain.com

Việc cuối cùng echolà kết thúc các tiêu đề trước dữ liệu. sendmail có thể không có trong PATH của bạn, hãy tìm trong / sbin và / usr / sbin, v.v.


Một phương pháp khác là sử dụng / usr / sbin / sendmail trực tiếp - nó sẽ tránh thêm các tiêu đề theo mailchương trình.
AnFi

Cảm ơn đề xuất của bạn nhưng tiếc là không có giải pháp nào hoạt động. cat -vet cho thấy nó được định dạng chính xác và không có dấu cách. Sử dụng sendmail cho tôi kết quả tương tự.
Andy Foster

đã cat -vetcho thấy bất kỳ ký tự kiểm soát như ^Mhay ^[?
meuh

Tôi đã thêm một nỗ lực để sử dụng sendmail trực tiếp.
meuh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.