Định dạng cho đường ống một tin nhắn vào sendmail là gì?


22

Tôi đang sử dụng lệnh sau để tạo tin nhắn nhanh chóng và gửi chúng:

echo "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail email@example.com

Có vẻ như khi bạn gửi thông tin từ một tệp, bằng cách thực hiện một cái gì đó như:

sendmail email@example.com mail.txt 

Sau đó sendmail xem mỗi dòng là một tiêu đề và phân tích nó. Nhưng cách tôi gửi nó ở trên, mọi thứ kết thúc trong dòng chủ đề.

Nếu một người muốn lặp lại một thông điệp hoàn chỉnh với các tiêu đề, vào sendmail, thì định dạng là gì? Làm thế nào để một người làm điều đó?

Câu trả lời:


24

echoTuyên bố của bạn nên thực sự xuất ra các dòng mới không phải là chuỗi \theo sau n. Bạn có thể làm điều đó bằng cách cung cấp -etùy chọn:

echo -e "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail email@example.com

Để hiểu sự khác biệt là gì, hãy xem đầu ra từ hai lệnh sau:

echo "Subject:Hello \n\n I would like to buy a hamburger\n"
echo -e "Subject:Hello \n\n I would like to buy a hamburger\n"

1

"Tài liệu ở đây" trong tập lệnh shell (Bạn soạn tiêu đề và nội dung thư)

#!/bin/sh
TO=email@example.com
/usr/sbin/sendmail -i $TO <<MAIL_END
Subject: Hello
To: $TO

I would like to buy a hamburger
MAIL_END

Nội dung thư từ tệp bên ngoài

#!/bin/sh
TO=email@example.com
BODY_FILE=mail.txt
(cat - $BODY_FILE)<<HEADERS_END | /usr/sbin/sendmail -i $TO
Subject: Hello
To: $TO

HEADERS_END
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.