จะส่งอีเมล์จาก command line หรือ script ได้อย่างไร? ฉันต้องการที่จะสามารถเรียกใช้สคริปต์โดยทางโปรแกรมผ่านผู้รับและข้อความ
จะส่งอีเมล์จาก command line หรือ script ได้อย่างไร? ฉันต้องการที่จะสามารถเรียกใช้สคริปต์โดยทางโปรแกรมผ่านผู้รับและข้อความ
คำตอบ:
mail -s subject someone@example.com
พิมพ์ข้อความของคุณกดCtrl+D
เพื่อเสร็จสิ้น
echo This will be the body of the email | mail -s "This is the Subject" destination@example.com
มีสองโปรแกรมที่ฉันรู้ซึ่งจะช่วยให้คุณกำหนดค่า Mac ของคุณเพื่อส่งอีเมลจากบรรทัดคำสั่งได้อย่างง่ายดาย
ฉันได้เขียน HOWTOs สำหรับทั้งคู่:
msmtp
ของทั้งสองผมขอแนะนำให้
การกำหนดค่ามีความซับซ้อนพอที่ฉันไม่แน่ใจว่าฉันควรทำซ้ำขั้นตอนทั้งหมดที่นี่หรือไม่ แต่ฉันจะพูดถึงว่าถ้าคุณใช้ Homebrew คุณสามารถติดตั้ง msmtp โดยใช้
brew install msmtp --with-macosx-keyring
ส่วนที่เหลือเป็นเพียงเรื่องของการตั้งค่าไฟล์การกำหนดค่าที่เกี่ยวข้อง
ที่แรกก็คือ /usr/local/etc/msmtprc
# Begin msmtprc
# Set default values for all following accounts.
defaults
tls on
logfile ~/.msmtp.log
# A first gmail address
account example@gmail.com
host smtp.gmail.com
port 587
protocol smtp
auth on
from example@gmail.com
user example@gmail.com
tls on
tls_starttls on
# this next line is crucial: you have to point to the correct security certificate for GMail.
# If this doesn't work, check the mstmp documentation
# at http://msmtp.sourceforge.net/documentation.html for help
#
# This next line should all be on one long line:
tls_trust_file /path/to/Thawte Roots/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem
# Set a default account
# You need to set a default account for Mail
account default : example@gmail.com
# end msmtprc
โปรดทราบว่าtls_trust_file
บรรทัดควรชี้ไปที่ใดก็ตามที่คุณได้ดาวน์โหลดและติดตั้งใบรับรองจากhttps://www.thawte.com/roots/index.html
ฉันใส่ของฉัน~/Dropbox/Thawte Roots
เพื่อที่ฉันจะได้ใช้กับเครื่อง Mac ทั้งหมดของฉัน
จากนั้นคุณต้องใช้~/.mailrc
ไฟล์เพื่อบอกตำแหน่งที่อยู่ msmtp binary หากคุณใช้brew
มันจะเป็น/usr/local/bin/msmtp
เช่นนั้นไฟล์จะเป็นดังนี้:
set sendmail="/usr/local/bin/msmtp"
ขั้นตอนสุดท้าย แต่ที่สำคัญคือการทำให้แน่ใจว่า Keychain ของคุณมีข้อมูลในรูปแบบที่ msmtp คาดหวัง:
ฉันคิดว่าครอบคลุมรายละเอียดส่วนใหญ่ ดูhttp://www.tuaw.com/2010/05/04/msmtp-a-free-tool-to-send-email-from-terminal/หากคุณต้องการรายละเอียดเพิ่มเติม
example@gmail.com
เป็นที่อยู่อีเมล Gmail หรือ Google Apps
~/.msmtprc
วิธีพื้นฐานที่สุดในการส่งเมลคือเซสชัน telnet ที่มีเซิร์ฟเวอร์ smtp ของผู้ให้บริการ / เครือข่ายของคุณ หลังจากที่คุณติดต่อเซิร์ฟเวอร์และหลังจากทุกคำสั่งเซิร์ฟเวอร์จะตอบถ้ามันยอมรับคำสั่งด้วยบางสิ่งเช่น "250 OK" หรือหากไม่มีข้อความแสดงข้อผิดพลาด
รายละเอียดทั้งหมดสามารถพบได้ใน RFC2821 - Simple Mail Transfer Protocol, Google สำหรับมัน วิธีพื้นฐานนี้ดีมากสำหรับการทดสอบว่าทำไมมีอะไรผิดพลาดในการส่งเมล แต่ฉันคิดว่ามันค่อนข้างซับซ้อนในการเขียนสคริปต์เพื่อพิสูจน์แบบสมบูรณ์
ก่อนอื่นรับอินเทอร์เฟซบรรทัดคำสั่งบนคอมพิวเตอร์ของคุณโดยเริ่มต้น Terminal จากนั้นให้ทำตามคำสั่งต่อไปนี้ทีละคำสั่ง
เปิดเซสชัน telnet ไปยังพอร์ต 25 ของเซิร์ฟเวอร์ smtp ของผู้ให้บริการ / เครือข่ายของคุณ
telnet name_or_ip_of_smtp_server 25
กล่าวทักทายพร้อมกับชื่ออินเทอร์เน็ตของผู้ให้บริการ / เครือข่ายของคุณเช่น abc.com
EHLO name_of_your_network
จำเป็นต้องใช้ที่อยู่ from = return <และ> เป็นส่วนหนึ่งของคำสั่ง
MAIL FROM:<your_email_adress>
ระบุปลายทางอย่างน้อยหนึ่งรายการ <และ> เป็นส่วนหนึ่งของคำสั่ง
RCPT TO:<destination_email_address>
RCPT TO:<second_destination_email_address>
RCPT TO:<etc_destination_email_address>
แจ้งเซิร์ฟเวอร์ที่คุณต้องการเริ่มส่งข้อมูล
DATA
ตอนนี้เซิร์ฟเวอร์ควรตอบคุณสามารถเริ่มส่งจดหมายและเข้าสู่โหมดข้อมูล
your data
more data
etc
ตอนนี้เสร็จสิ้นข้อมูลที่มีจุดเป็นอักขระเฉพาะในบรรทัด
.
เซิร์ฟเวอร์กลับไปที่โหมดคำสั่งเพื่อให้คุณสามารถออกจาก
QUIT
สิ่งนี้ได้ผลสำหรับฉันมันเขียนโดยคำนึงถึง Lion แต่ใช้ได้กับ Mountain Lion Btw นี่คือการใช้ Gmail ดังนั้นหากคุณไม่ได้ ...
คุณไม่จำเป็นต้องดาวน์โหลดอะไรเลย! (เพียงตั้งค่าบัญชี gmail)
http://www.anujgakhar.com/2011/12/09/using-macosx-lion-command-line-mail-with-gmail-as-smtp/
กำหนดค่า Postfix สำหรับ Gmail SMTP แก้ไขไฟล์ /etc/postfix/main.cf
sudo vim /etc/postfix/main.cf
และเพิ่มดังต่อไปนี้ด้านล่าง relayhosts ความเห็น: -
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_sasl_mechanism_filter = plain
สร้าง sasl_password หากยังไม่มีอยู่
sudo vim /etc/postfix/sasl_passwd
และป้อนข้อมูลต่อไปนี้: -
[smtp.gmail.com]:587 username@gmail.com:password
รันคำสั่งต่อไปนี้
sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
sudo launchctl stop org.postfix.master
sudo launchctl start org.postfix.master
และคุณทำเสร็จแล้ว….
ตอนนี้คุณควรจะสามารถส่งอีเมลจากภายในบรรทัดคำสั่งเช่นส่งเนื้อหาของไดเรกทอรีเป็นต้นไม้ไปยังที่อยู่อีเมล
tree /var/www/somefolder | mail -s "contents" your@yourdomain.com
คุณอาจต้องการตรวจสอบpostfixconfที่เปิดใช้งานและกำหนดค่า OS X เพื่อส่งอีเมลจากบรรทัดคำสั่ง (โดยใช้อินพุตของคุณ)
มันขึ้นอยู่กับการกำหนดค่า postfix ที่มีเอกสารดีบนเว็บที่นี่ , ที่นี่และที่นี่
เนื่องจากเป็นระบบปฏิบัติการยูนิกซ์คุณสามารถใช้คำสั่งsendmail