รูปแบบสำหรับการส่งข้อความไปยัง sendmail คืออะไร?


22

ฉันใช้คำสั่งต่อไปนี้เพื่อสร้างข้อความได้ทันทีและส่งพวกเขา:

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

ดูเหมือนว่าเมื่อคุณส่งข้อมูลจากไฟล์โดยทำสิ่งที่ชอบ:

sendmail email@example.com mail.txt 

จากนั้น sendmail จะเห็นแต่ละบรรทัดเป็นส่วนหัวและแยกวิเคราะห์ แต่วิธีที่ฉันส่งไปด้านบนทุกอย่างจบลงในหัวเรื่อง

หากต้องการสะท้อนข้อความที่มีส่วนหัวให้เป็น sendmail แล้วรูปแบบคืออะไร เราจะทำอย่างไร

คำตอบ:


24

คุณechoคำสั่งควรบรรทัดใหม่เอาท์พุทมันไม่ลำดับตามมาด้วย\ nคุณสามารถทำได้โดยระบุ-eตัวเลือก:

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

เพื่อให้เข้าใจถึงความแตกต่างอะไรให้ดูผลลัพธ์จากสองคำสั่งต่อไปนี้:

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

"Here document" ในเชลล์สคริปต์ (คุณเขียนส่วนหัวและเนื้อหาของข้อความ)

#!/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

เนื้อหาข้อความจากไฟล์ภายนอก

#!/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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.