ฉันจะส่งอีเมลผ่านmailx
คำสั่งUNIX ได้อย่างไร
ฉันจะส่งอีเมลผ่านmailx
คำสั่งUNIX ได้อย่างไร
คำตอบ:
ตัวอย่าง
$ echo "something" | mailx -s "subject" recipient@somewhere.com
เพื่อส่งไฟล์แนบ
$ uuencode file file | mailx -s "subject" recipient@somewhere.com
และส่งไฟล์แนบและเขียนเนื้อหาข้อความ
$ (echo "something\n" ; uuencode file file) | mailx -s "subject" recipient@somewhere.com
mail
.
uuencode
เป็นเทคโนโลยีดั้งเดิมจากยุคพันปีที่ผ่านมาซึ่งไม่ได้สร้างสิ่งที่เราหมายถึงในปัจจุบันโดย "ไฟล์แนบ" โดยทั่วไปจะวางชิ้นส่วนของความสับสนที่เครื่องอ่านได้ในตอนท้ายของข้อความ ในวันนี้และยุคนี้คุณจะได้รับบริการที่ดีขึ้นจากจดหมายที่รับรู้ MIME อย่างเหมาะสม น่าเสียดายที่ไม่มีการmailx
แทนที่ที่รองรับในระดับสากลด้วยคุณสมบัติ MIME แต่ถ้าคุณมีmutt
นั่นอาจเป็นหนทางที่มีการต่อต้านน้อยที่สุด
อยู่นี่ไง :
echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"
ปล. เนื้อหาและหัวเรื่องควรอยู่ในเครื่องหมายคำพูดคู่ ลบคำพูดออกจากFROM_EMAIL
และTo_EMAIL
ในขณะที่แทนที่ที่อยู่อีเมล
mailx -s "subjec_of_mail" abc@domail.com < file_name
ผ่านmailx
ยูทิลิตี้เราสามารถส่งไฟล์จากไปunix
mail server
ในโค้ดด้านบนเราจะเห็นพารามิเตอร์แรกคือพารามิเตอร์-s "subject of mail"
ที่สองคือmail ID
และพารามิเตอร์สุดท้ายคือชื่อไฟล์ที่เราต้องการแนบ
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress
-c และ -b เป็นทางเลือก
-s: ระบุหัวเรื่องหากหัวเรื่องมีช่องว่างให้ใช้เครื่องหมายคำพูด
-c: ส่งสำเนาคาร์บอนไปยังรายชื่อผู้ใช้โดยคั่นด้วยลูกน้ำ
-b: ส่งสำเนาตาบอดไปยังรายชื่อผู้ใช้โดยคั่นด้วยลูกน้ำ
หวังว่าคำตอบของฉันจะชี้แจงข้อสงสัยของคุณ
เร็วขึ้นด้วยคำสั่ง MUTT
echo "Body Of the Email" | mutt -a "File_Attachment.csv" -s "Daily Report for $(date)" -c cc_mail@g.com to_mail@g.com -y
echo "" | mutt -s "test" -a ./file -- name@mail.com -y
จากหน้าคน:
การส่งอีเมล
ในการส่งข้อความถึงบุคคลตั้งแต่หนึ่งคนขึ้นไปสามารถเรียกใช้ mailx โดยมีอาร์กิวเมนต์ซึ่งเป็นชื่อของบุคคลที่จะส่งอีเมลถึง จากนั้นผู้ใช้จะต้องพิมพ์ข้อความตามด้วย 'control-D' ที่จุดเริ่มต้นของบรรทัด
กล่าวอีกนัยหนึ่ง mailx อ่านเนื้อหาที่จะส่งจากอินพุตมาตรฐานและสามารถเปลี่ยนเส้นทางเป็นเหมือนปกติได้ เช่น:
ls -l $HOME | mailx -s "The content of my home directory" someone@email.adr
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`
mail -s "$header" abc.xyz@google.com, \
cde.mno@yahoo.com, \ < open_files.log
การปรับแต่งจากที่อยู่
MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"
echo $MESSAGE | mail -s "$SUBJECT" $TOADDR -- -f $FROM
mail
และmailx
มีตัวเลือกที่แตกต่าง
นี่คือฟังก์ชั่นมัลติฟังก์ชั่นเพื่อจัดการกับการส่งเมลที่มีไฟล์แนบหลายไฟล์:
enviaremail() {
values=$(echo "$@" | tr -d '\n')
listargs=()
listargs+=($values)
heirloom-mailx $( attachment=""
for (( a = 5; a < ${#listargs[@]}; a++ )); do
attachment=$(echo "-a ${listargs[a]} ")
echo "${attachment}"
done) -v -s "${titulo}" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://$1 \
-S from="${2}" \
-S smtp-auth-user=$3 \
-S smtp-auth-password=$4 \
-S ssl-verify=ignore \
$5 < ${cuerpo}
}
ฟังก์ชั่นเรียก: enviaremail "smtp.mailserver: port" "from_address" "authuser" "'pass'" "destination" "รายการไฟล์แนบคั่นด้วยช่องว่าง"
หมายเหตุ: ลบเครื่องหมายคำพูดคู่ในการโทร
นอกจากนี้โปรดอย่าลืมกำหนด $ titulo (หัวเรื่อง) และ $ cuerpo (เนื้อหา) ภายนอกของอีเมลก่อนใช้ฟังก์ชัน
หากคุณต้องการส่งมากกว่าสองคนหรือ DL:
echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com
ที่นี่: