ส่งจดหมายจาก terminal linux ในบรรทัดเดียว [ปิด]


148

ฉันรู้ว่ามีคำสั่งmailใน linux เพื่อส่งอีเมลผ่านบรรทัดคำสั่ง ฉันจะส่งอีเมลธรรมดาโดยใช้หนึ่งบรรทัดจากเทอร์มินัลได้อย่างไร

ตัวอย่างเช่น:

mail user@gmail.com [subject] [body]

และมีอีเมลที่ส่งโดยไม่มีการยืนยันหรือแจ้งให้ผู้ใช้?

เหตุผลคือฉันต้องการส่งข้อความสั้น ๆ ทางอีเมลถึงตัวเองเมื่อมีเหตุการณ์เฉพาะเกิดขึ้นในjavaโปรแกรม แนวคิดคือฉันจะใช้Runtime.getRuntime()... ฯลฯ เพื่อส่งmail commandจากjavaโปรแกรมของฉัน

ฉันเคยcronทำสิ่งที่คล้ายกันในอดีต แต่การใช้งานปัจจุบันไม่ได้ใช้cronดังนั้นฉันต้องลองใช้แทน


ใช้bulk mail CLIเครื่องมือที่มีประสิทธิภาพและมีประสิทธิภาพในการส่งอีเมลแบบไดนามิกไปยังรายชื่อผู้รับจดหมายโดยใช้เพียงคำสั่งเดียว: bulkmail mail! ทำตลาดอีเมลที่รวดเร็วมินิไม่ยุ่งยากด้วยเครื่องมือขนาดเล็ก แต่ทรงพลัง💌 bulkmail.now.sh
Kumar Abhirup

คำตอบ:


209

เมลสามารถแสดงถึงสองสามโปรแกรมบนระบบ linux สิ่งที่คุณต้องการที่อยู่เบื้องหลังมันเป็นทั้งsendmailหรือpostfix ฉันขอแนะนำอย่างหลัง

คุณสามารถติดตั้งผ่านผู้จัดการแพคเกจที่คุณชื่นชอบ จากนั้นคุณต้องกำหนดค่าและเมื่อคุณทำเช่นนั้นคุณสามารถส่งอีเมลดังนี้:

 echo "My message" | mail -s subject user@gmail.com

ดูคู่มือสำหรับข้อมูลเพิ่มเติม

เท่าที่การกำหนดค่า postfix ไปมีบทความมากมายบนอินเทอร์เน็ตเกี่ยวกับวิธีการทำ ยกเว้นว่าคุณอยู่บนเซิร์ฟเวอร์สาธารณะที่มีโดเมนที่ลงทะเบียนโดยทั่วไปคุณต้องการส่งต่ออีเมลไปยังเซิร์ฟเวอร์ SMTP ที่คุณสามารถส่งอีเมลได้

ตัวอย่างเช่น gmail ให้ทำตาม http://rtcamp.com/tutorials/linux/ubuntu-postfix-gmail-smtp/ หรือการสอนอื่น ๆ ที่คล้ายกัน


4
Postfix นั้นมีประสิทธิภาพ แต่ถ้าคุณเพียงแค่ส่งอีเมลให้ลอง "ssmtp" แพ็คเกจนี้มีขนาดเล็กกว่าและไม่เรียกใช้ daemon เช่น postfix สนับสนุนโปรโตคอลที่ปลอดภัยและทำงานกับ gmail
oᴉɹǝɥɔ

6
"ไม่ได้ติดตั้งโปรแกรม 'mail' คุณสามารถติดตั้งได้โดยพิมพ์: apt-get install mailutils"
Tom

มากขึ้นน้ำหนักเบา: แพคเกจบวกnullmailer bsd-mailxเพียงพอสำหรับการทำงานมากที่สุดสถานี :) และเป็นnullmailerมีsendmailอินเตอร์เฟซที่คุณยังอาจข้ามbsd-mailxแพคเกจและใช้วิธีการ Hengjie ของ
Izzy

@ oᴉɹǝɥɔ ssmtpเลิกใช้แล้ว ใช้msmtpแทน
Matt M.


32
echo "Subject: test" | /usr/sbin/sendmail user@domain.com

สิ่งนี้ช่วยให้คุณสามารถทำได้ภายในหนึ่งบรรทัดคำสั่งโดยไม่ต้องสะท้อนไฟล์ข้อความ คำตอบนี้สร้างขึ้นจากคำตอบของ @ mti2935 เครดิตจึงไปที่นั่น


2
เพียงเพิ่มคำตอบสำหรับหัวเรื่องและเนื้อหา: echo -e "หัวเรื่อง: ทดสอบ \ n \ n เนื้อหาของร่างกายที่นี่ \ n" | sendmail user@domain.com
emvidi

13

คุณยังสามารถใช้ sendmail:

/usr/sbin/sendmail user@domain.com < /file/to/send

หมายเหตุ: ฉันมี Postfix + S-Nail นี่คือสิ่งที่ได้ผลสำหรับฉัน ก่อนอื่นฉันใช้คำตอบ "Rohit Gupta" และดาวน์โหลดยูทิลิตีเมลจากนั้นคุณและทุกอย่างก็ทำงานได้
Mohammed Baashar

13

สำหรับผู้ใช้ Ubuntu: ขั้นแรกคุณต้องติดตั้ง mailutils

sudo apt-get install mailutils

ตั้งค่าเซิร์ฟเวอร์อีเมลหากคุณใช้ gmail หรือ smtp ตามลิงค์นี้ จากนั้นใช้คำสั่งนี้เพื่อส่งอีเมล

echo "this is a test mail" | mail -s "Subject of mail" username@domain.com

ในกรณีที่คุณใช้ gmail และยังคงได้รับข้อผิดพลาดในการตรวจสอบสิทธิ์คุณต้องเปลี่ยนการตั้งค่าของ gmail:

เปิดการเข้าถึงสำหรับแอปที่ปลอดภัยน้อยลงจากที่นี่



-3

ส่งเมลแบบง่าย:

$ mail -s "test message from centos" recipient@example.com
hello from centos linux command line

Ctrl+ Dเพื่อสิ้นสุด


2
เขากำลังขอคำสั่งในบรรทัด
Rohit Gupta
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.