कमांड लाइन से ईमेल कैसे भेजें?


29

कमांड लाइन या स्क्रिप्ट से ईमेल कैसे भेजें? मैं रिसीवर और संदेश को पास करके स्क्रिप्ट को प्रोग्रामेटिक रूप से चलाने में सक्षम होना चाहता हूं।


यदि आप एक कार्यक्रम लिख रहे हैं, तो कई भाषाओं में पुस्तकालय हैं जो ईमेल के साथ काम करते हैं
user151019

जवाबों:


22

mail -s subject someone@example.com अपना संदेश टाइप करें, Ctrl+Dसमाप्त करने के लिए दबाएँ


11
यदि आपने यह बताने के लिए अपना सिस्टम कॉन्फ़िगर नहीं किया है कि कहां ईमेल भेजना है, तो वह वास्तव में ईमेल नहीं भेजेगा, यह सिर्फ मेरे मैक पर ढेर हो जाएगा।
टीजे लुओमा

15
-1: यह उत्तर अधूरा है। जब तक इस कमांड को निष्पादित करने से पहले सिस्टम को कॉन्फ़िगर नहीं किया गया था, जैसा कि @TJLuoma ने उल्लेख किया है, यह कमांड काम नहीं करेगा।
मेल्विनकिम

1
टीजे लुओमा और मेल्विकिम गलत हैं: बॉक्स से बाहर एक मानक ओएस एक्स सिस्टम ईमेल भेज देगा, जिसमें आवश्यक कॉन्फ़िगरेशन नहीं होगा। ओएस एक्स मशीन अपने एसएमटीपी सर्वर के रूप में काम करेगी, गंतव्य डोमेन के लिए DNS एमएक्स को देखती है और वहां मेल भेजती है।
जॉनीडेई

2
@patrix, सही है, यह लॉग-इन खाते के लंबे उपयोगकर्ता नाम और मैक के स्व-निर्मित ".लोकल" पते का उपयोग "से" बनाने के लिए करता है। मैं शेल और स्क्रिप्टेड प्रक्रियाओं से मुझे और मेरे कर्मचारियों को अधिसूचना ईमेल के लिए हर समय इसका उपयोग करता हूं। टीजे लुओमा और मेलविकिम कह रहे थे कि यह "काम नहीं करेगा" और "वास्तव में ईमेल न भेजें", हालांकि, दोनों गलत हैं।
जॉनदेई

1
@RamarajT, हाँ आप मेल करने के लिए इको कमांड के आउटपुट को पाइप कर सकते हैं, और इसके बाद Cmd-D की आवश्यकता नहीं होगी। उदाहरण के लिए: echo This will be the body of the email | mail -s "This is the Subject" destination@example.com
JohnEDee

26

ऐसे दो कार्यक्रम हैं, जिनके बारे में मुझे जानकारी है, जिससे आप आसानी से कमांड लाइन से ईमेल भेजने के लिए अपने मैक को कॉन्फ़िगर कर पाएंगे।

मैंने उन दोनों के लिए HOWTO लिखा है:

दो में से, मैं सुझाव देता हूं 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ताकि मैं अपने सभी मैक पर रख सकूं।

फिर आपको ~/.mailrcयह कहने के लिए फ़ाइल की आवश्यकता है कि एमएसएमटीपी बाइनरी कहाँ स्थित है। यदि आप इसका उपयोग brewकरते हैं /usr/local/bin/msmtpतो फ़ाइल इस तरह दिखाई देगी:

set sendmail="/usr/local/bin/msmtp"

अंतिम लेकिन महत्वपूर्ण कदम यह सुनिश्चित कर रहा है कि आपके किचेन के पास प्रारूप में वही जानकारी है जो एमएसएमटीपी यह उम्मीद करेगी:

मुझे लगता है कि इसमें अधिकांश विवरण शामिल हैं। Http://www.tuaw.com/2010/05/04/msmtp-a-free-tool-to-send-email-from-terminal/ देखें तो कुछ और बारीकियां चाहिए।


स्पष्ट रूप से उपरोक्त स्क्रिप्ट में मेरे उदाहरण यह मानते हैं कि आप जीमेल का उपयोग कर रहे हैं, लेकिन इसका उपयोग अन्य सर्वरों के लिए भी किया जा सकता है। example@gmail.comअपने Gmail या Google Apps ईमेल पते में बदलें ।
टीजे लुओमा

मैं अंततः यहाँ उपलब्ध Google रूट्स का उपयोग करके इसे प्राप्त करने में सक्षम था: pki.google.com/roots.pem । यदि आप ट्रस्ट फ़ाइल और Gmail के साथ समस्याओं पर अटके हुए हैं, तो यह आपको अनब्लॉक कर सकता है।
कोडविज़

यदि आप config (msmtprc) फ़ाइल के स्थान के साथ समस्या कर रहे हैं, तो MacOS 10.13.3 पर Homebrew के साथ स्थापित करने के बाद, msmtp ने मेरे घर की निर्देशिका में इसके लिए देखा: ~/.msmtprc
कोडवर्ड'

15

मेल भेजने का सबसे मूल तरीका आपके प्रदाता / नेटवर्क के smtp सर्वर के साथ एक टेलनेट सेशन है। जब आप सर्वर से संपर्क करते हैं और प्रत्येक कमांड के बाद सर्वर जवाब देगा कि क्या यह "250 ओके" जैसी किसी चीज के साथ कमांड को स्वीकार करता है, या नहीं तो एक त्रुटि संदेश के साथ।

सभी विवरण RFC2821 - सिंपल मेल ट्रांसफर प्रोटोकॉल, Google के लिए देखे जा सकते हैं। यह मूल तरीका परीक्षण के लिए बहुत अच्छा है कि क्यों कुछ गलत मेल भेज रहा है, लेकिन मुझे लगता है कि इसे पूर्ण प्रमाण के लिए स्क्रिप्ट के लिए काफी जटिल है।

पहले टर्मिनल शुरू करके अपने कंप्यूटर पर एक कमांड-लाइन इंटरफ़ेस प्राप्त करें। फिर एक के बाद एक, निम्न आदेशों के साथ जारी रखें।

अपने प्रदाता / नेटवर्क के smtp सर्वर के 25 पोर्ट करने के लिए एक टेलनेट सत्र खोलें

telnet name_or_ip_of_smtp_server 25

हैलो प्लस अपने प्रदाता / नेटवर्क का इंटरनेट नाम, जैसे abc.com

EHLO name_of_your_network

a = = रिटर्न एड्रेस की जरूरत है, <और> कमांड का हिस्सा हैं

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

13

यह मेरे लिए काम करता है, यह शेर को ध्यान में रखकर लिखा गया था लेकिन माउंटेन शेर के लिए काम करता है। Btw यह जीमेल का उपयोग कर रहा है तो यदि आप नहीं कर रहे हैं ...

आपको कुछ भी डाउनलोड करने की आवश्यकता नहीं है! (सिर्फ एक जीमेल अकाउंट सेटअप करें)

http://www.anujgakhar.com/2011/12/09/using-macosx-lion-command-line-mail-with-gmail-as-smtp/

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

पुनश्च: मुझे यह काम करने के लिए मिला जब इसे मैन्युअल रूप से टर्मिनल या स्क्रिप्ट्स से चलाया जा रहा था। हालाँकि इस बिंदु पर मैं इस समस्या से घिरा हुआ हूँ कि जब स्क्रिप्ट लॉन्च की जाती है तो मेल कभी नहीं भेजे जाते हैं। मुझे लगता है कि यह लॉन्च जॉब सेटअप के साथ एक समस्या है।
जॉनी

मुझे यह काम कर गया। Apple.stackexchange.com/questions/92406/…
जॉनी

+1 यह जोड़ने के लिए धन्यवाद। वास्तव में मेरी मदद की। मैं वास्तव में जरूरत थी relayhost प्रविष्टि main.conf (यह मेरे अपने LAN पर SMTP सर्वर है)।
boot13

3
उपरोक्त तारीख से बाहर हो सकता है। मैं जोड़ने "smtp_sasl_mechanism_filter = सादे" के अनुसार करना था stackoverflow.com/a/26451135/197789 यह काम करने के लिए मिलता है। अन्यथा मुझे "सामान्य विफलता" त्रुटि मिली।
वॉन

0

mtcmail एक और विकल्प है: http://www.macupdate.com/app/mac/33505/mtcmail-cli

[इस अतिरिक्त पाठ पर ध्यान न दें। इसलिए जोड़ा गया: शरीर में कम से कम 30 अक्षर होने चाहिए; आपने 27 को प्रवेश किया।]


0

आप कमांड लाइन (आपके इनपुट का उपयोग करके) से ईमेल भेजने के लिए OS X को सक्षम और कॉन्फ़िगर करने वाले पोस्टफिक्सकॉन की जांच कर सकते हैं ।

यह पोस्टफ़िक्स कॉन्फ़िगरेशन पर आधारित है जो यहाँ , यहाँ और यहाँ वेब पर अच्छी तरह से प्रलेखित है


-3

चूंकि यह यूनिक्स आधारित है, आप सेंडमेल कमांड का उपयोग कर सकते हैं ।


-1: sendmail SMTP सर्वर कमांड है
vartec
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.