यूनिक्स "मेल" में "से:" पता बदलें


89

mail TO_ADDRईमेल में परिणाम का उपयोग करके यूनिक्स कमांड लाइन से एक संदेश भेजना $USER@$HOSTNAME। क्या "प्रेषक:" पते को बदलने का कोई तरीका है mail?

रिकॉर्ड के लिए, मैं Ubuntu पर GNU Mailutils 1.1 / 1.2 का उपयोग कर रहा हूं (लेकिन मैंने फेडोरा और आरएचईएल के साथ समान व्यवहार देखा है)।

[संपादित करें]

$ मेल -s परीक्षण chris@example.org                                                                  
प्रतिलिपि: 
प्रेषक: foo@bar.org

परिक्षण
।

पैदावार

विषय: परीक्षण
को: <chris@example.org>
एक्स-मेलर: मेल (GNU Mailutils 1.1)
संदेश-आईडी: <E1KdTJj-00025z-RK @ localhost>
प्रेषक: <chris @ localhost>
दिनांक: बुध, १० सितंबर २०० 13: 13:17:23 -0400

प्रेषक: foo@bar.org

परिक्षण

"From: foo@bar.org" लाइन मैसेज बॉडी का हिस्सा है, हेडर का हिस्सा नहीं है।


1
यूनिक्स का यह कैसा स्वाद है? और कौन सा मेल संस्करण? बस यह जानने के लिए कि कहां काम नहीं करता है।
विन्को वेर्सालोविच

उम, लगभग सभी। Mailx या बर्कले मेल का उपयोग करने वाला कोई भी व्यक्ति इस तरह से देखने वाला है। यदि आप हेडर को प्रभावित करना चाहते हैं, तो पूरे हेडर को लिखें और सीधे मेल या मेल से भेजें।
थॉमस कम्मेयर

ओह, लेकिन, क्षमा करें, मैं GenToo चलाता हूं।
१०:३५ पर थॉमस कम्मेयर

रिकॉर्ड के लिए, मैं mailx का उपयोग कर रहा हूं और उदाहरण क्रिस काम करता है। या कि तुम क्या मतलब है?
विंको व्रसालोविक

Vinko, UN * X का कौन सा संस्करण आप चला रहे हैं? क्या आप "काम" से मतलब रखते हैं कि आप उसके परिणाम प्राप्त करते हैं या आपको वांछित व्यवहार मिलता है जो उसकी आवश्यकता को संबोधित करेगा? यह इस बात पर कुछ हद तक निर्भर करता है कि आपके प्लेटफ़ॉर्म पर मैसेज सबमिशन कैसे काम करता है और क्या क्लाइंट इससे पहले एक खाली लाइन जोड़ता है
थॉमस कम्मेयर

जवाबों:


109

मेल के मेरे संस्करण में (डेबियन लिनक्स 4.0) स्रोत / उत्तर पते को नियंत्रित करने के लिए निम्नलिखित विकल्प काम करते हैं

  • -एक स्विच, अतिरिक्त हेडर के लिए लागू करने के लिए, से एक की आपूर्ति: कमांड लाइन है कि बाहर जाने वाले मेल हेडर से जोड़ दिए जाएंगे पर हैडर
  • $ REPLYTO वातावरण चर निर्दिष्ट करता है एक जवाब दें: हेडर

तो निम्न अनुक्रम

export REPLYTO=cms-replies@example.com
mail -aFrom:cms-sends@example.com -s 'Testing'

परिणाम, मेरे मेल क्लाइंट में, cms-sends@example.com का एक मेल है, जो किसी भी उत्तर को cms-replies@example.com पर डिफ़ॉल्ट करेगा।

एनबी: मैक ओएस उपयोगकर्ता: आपके पास -a नहीं है, लेकिन आपके पास $ REPLYTO है

NB (2): CentOS उपयोगकर्ता, कई टिप्पणीकारों ने जोड़ा है कि आपको उपयोग करने की आवश्यकता -rनहीं है-a

NB (3): यह उत्तर कम से कम दस साल पुराना (1) है, कृपया ध्यान रखें कि जब आप Google से आ रहे हों।


मैंने यह सुनिश्चित करने के लिए यहां फिर से परीक्षण किया, और यह मेरे लिए ठीक काम करता है। सभी मेल क्लाइंट रिप्लाई-टू के साथ अच्छी तरह से काम नहीं करते हैं, लेकिन मुझे लगता है कि अब तक एक हल समस्या थी। REPLYTO env वैरिएबल का उल्लेख मैन पेज में किया गया है, अन्य यूनिक्स मेलर्स इसका सम्मान करते हैं, एमएसीएस आदि। फिर भी, मुझे लगता है कि आपके पास एक फिक्स है।
cms

मुझे नहीं लगता कि यह मेल क्लाइंट है ... मुझे कच्चे संदेश पाठ में उत्तर-प्रति शीर्ष लेख नहीं दिख रहा है। लेकिन, हाँ, -ए पर्याप्त है।
क्रिस कॉनवे

1
नहीं, यह नहीं है। लेकिन: "लाइसेंस के कारणों के कारण डेबियन सिस्टम में पूर्ण GNU मेलटुइल्स मैनुअल उपलब्ध नहीं है।" -Reply-To: ... काम करता है।
क्रिस कॉनवे

मैं gnu.org/software/mailutils/manual/mailutils.html पर भी REPLYTO
क्रिस कॉनवे

4
CentOS में mail -aविकल्प का अर्थ है "अटैचेनेट"। मैं का उपयोग करने के लिए आवश्यक -rकी तरहmail -r from@whatever.com
equivalent8

42

Centos 5.3 पर मैं ऐसा करने में सक्षम हूं:

mail -s "Subject" user@address.com -- -f from@address.com < body

डबल डैश मेल को पार्सिंग-ऑफ तर्क से रोकता है और इसे स्वयं भेजने के लिए भेज देता है।


3
काम नहीं करता। 3 पते अब पते पर जुड़ जाते हैं। पते के लिए, एफ पता और
स्थानीय क्षेत्र

2
क्या आप मदद कर सकते हैं, यह काम करता था - लेकिन, हाल ही में एक अद्यतन के बाद से, यह अब काम नहीं करता है, यह सिर्फ इसके अलावा एक ईमेल भेजने की कोशिश करता है -f @ hostname
Wil

1
CentOS 6.3 पर काम नहीं करता है। -R ध्वज का उपयोग करके नीचे ubuntu-fanboy उत्तर का प्रयास करें।
स्काइकेटर

26

जीएनयू मेल्यूटिल्स का 'मेल' कमांड आपको ऐसा करने की अनुमति नहीं देता (आसानी से कम से कम)। लेकिन यदि आप 'हीरलूम-मेलएक्स' स्थापित करते हैं, तो इसके मेल कमांड (मेलएक्स) में फ़ील्ड से डिफ़ॉल्ट '$ USER @ $ HOSTNAME' को ओवरराइड करने का '-r' विकल्प है।

echo "Hello there" | mail -s "testing" -r sender@company.com recipient@company.com

'Mailx' के लिए काम करता है लेकिन 'mail' नहीं।

$ ls -l / usr / बिन / मेल
lrwxrwxrwx 1 रूट रूट 22 2010-12-23 08:33 / usr / बिन / मेल -> / आदि / विकल्प / मेल
$ ls -l / etc / विकल्प / मेल
lrwxrwxrwx 1 रूट रूट 23 2010-12-23 08:33 / आदि / विकल्प / मेल -> / usr / bin / heirloom-mailx

5
शायद यह जानने के लिए उपयोगी हो सकता है कि mailउबंटू 14.04 एलटीएस समर्थन पर जीएनयू मेलुटिल्स कमांड प्रीइंस्टॉल्ड है -r, जिससे आप आसानी से प्रेषक का पता सेट कर सकते हैं।
जेरलोस

मैंने डेबियन 9.11 पर परीक्षण किया था, और विकल्प भी काम करता है।
फेडिर RYKHTIK

14
mail -s "$(echo -e "This is the subject\nFrom: Paula <johny@paula.com>\n
Reply-to: 1232564@yourserver.com\nContent-Type: text/html\n")" 
milas.josh@gmail.com < htmlFileMessage.txt

उपरोक्त मेरा समाधान है .... किसी भी अतिरिक्त हेडर को जोड़ने से पहले और उत्तर देने के बाद ही जोड़ा जा सकता है ... बस सुनिश्चित करें कि आप उन्हें जोड़ने से पहले अपने हेडर सिंटैक्स को जानते हैं .... यह मेरे लिए पूरी तरह से काम करता है।


1
आपके उदाहरण से यह मेरे लिए काम कर रहा है .. जब मैं ईमेल पता विषय आदि को बदल देता हूं, तो सभी शीर्ष लेखों को हटा दिया जाता है?
bsmoo

7

इसके अलावा -F optionप्रेषक का नाम निर्दिष्ट करने के लिए उपयोग करना अच्छा है ।

कुछ इस तरह:

mail -s "$SUBJECT" $MAILTO -- -F $MAILFROM -f ${MAILFROM}@somedomain.com

या बस उपलब्ध विकल्पों को देखें: http://www.courier-mta.org/sendmail.html


5

यह संभव है कि नाम और पते से दोनों का उपयोग करके कुछ इस तरह से सेट किया जाए:

 echo test | mail -s "test" example@example.com -- -F'Some Name<example2@example.com>' -t

किसी कारण से गुजरने -F'Some Name'और -fexample2@example.comकाम नहीं करने के लिए, लेकिन -tभेजने के लिए काम करता है और "आसान" है।


4

यहाँ कुछ विकल्प दिए गए हैं:

  • यदि आपके पास पर्याप्त privelige है, तो सामान्य तालिका के साथ पुनर्लेखन करने के लिए Sendmail को कॉन्फ़िगर करें

  • पूरे हेडर को स्वयं लिखें (या इसे खुद को मेल करें, पूरे संदेश को सभी हेडर के साथ सहेजें, और फिर से संपादित करें, और इसे कमांड लाइन से ईमेल के साथ भेजें।

  • सीधे Sendmail के साथ भेजें, "-f" कमांड लाइन फ्लैग का उपयोग करें और अपने संदेश में "From:" लाइन शामिल न करें

ये सब बिल्कुल एक जैसे नहीं हैं, लेकिन मैं इसे आगे देखने के लिए छोड़ दूँगा।

मेरे पोर्टेबल पर, मैंने एक ग्राहक को एक आउटगोइंग मेल सर्वर के रूप में प्रमाणित करने के लिए भेजा है और मैं जेनरिक का उपयोग करके रिटर्निंग मेल दूसरे खाते में आता हूं। यह एक सम्मोहन की तरह काम करता है। मैं आने वाले मेल को fetchmail के साथ एकत्र करता हूं।


4

मैंने इसे उपरोक्त सभी उत्तरों से लिया है। मेरे लिए कुछ भी काम नहीं किया जब मैंने उनमें से प्रत्येक को आज़माया। मैंने उपरोक्त सभी उत्तरों को जोड़कर बहुत से निशान और त्रुटि की और इस पर निष्कर्ष निकाला। मुझे यकीन नहीं है कि यह आपके लिए काम करता है, लेकिन इसने मेरे लिए Ununtu 12.04 और RHEL 5.4 पर काम किया।

echo "This is the body of the mail" | mail -s 'This is the subject' '<receiver-id1@email.com>,<receiver-id2@email.com>' -- -F '<SenderName>' -f '<from-id@email.com>'

एक रिसीवर आईडी के किसी भी संख्या को जोड़कर लोगों के किसी भी संख्या को मेल भेज सकते हैं और मेल द्वारा भेजा जाता है SENDERNAME से from-id@email.com

उम्मीद है की यह मदद करेगा।


यह vor / usr / bin / mail काम नहीं करता है, हो सकता है कि आपका कमांड सेंडमेल के लिए हो।
बेसजेरो

3

मुझे नहीं पता कि यह अन्य OS के साथ समान है, लेकिन OpenBSD में, मेल कमांड में यह सिंटैक्स है:

mail to-addr ... -sendmail-options ...

Sendmail में -f विकल्प है जहाँ आप FROM: फ़ील्ड के लिए ईमेल पता दर्शाते हैं। निम्नलिखित कमांड मेरे लिए काम करती है।

mail recepient@example.com -f from@example.com

मेरे लिये कार्य करता है! (इसके अलावा OpenBSD - मैकबुक प्रो।)
Aeonaut

1
अपडेट - ईमेल प्राप्तकर्ता अभी भी मेरे स्थानीय खाते का नाम पहले देखता है from@example.com- उदाहरण के लिए, "Aeonaut from@example.com"। किसी भी विचार यह कैसे बदलना है?
अन्नौत

3
मेरे लिए काम नहीं करता है। (ओएस एक्स पर्वत सिंह) "मेल: नहीं दे सकते हैं -f और लोगों को भेजने के लिए।"
जॉनी

3

धन्यवाद BEAU

mail -s "Subject" user@address.com -- -f from@address.com

मुझे बस यही मिला और यह मेरे लिए काम करता है। CentOS 5 पर मेल 8.1 के मैन पेजों में इसका उल्लेख नहीं है। के लिए -fविकल्प, आदमी पेज का कहना है:

-f सिस्टम मेलबॉक्स के बजाय फ़ाइल ऑपरेंड नाम की फ़ाइल से संदेश पढ़ें। (फ़ोल्डर भी देखें।) यदि कोई फ़ाइल ऑपरेंड निर्दिष्ट नहीं है, तो सिस्टम मेलबॉक्स के बजाय mbox से संदेश पढ़ें।

तो वैसे भी यह खोजने के लिए बहुत अच्छा है, धन्यवाद।


1
-fबेशक mailआपके उदाहरण के लिए एक विकल्प नहीं है , क्योंकि यह पहले से है --। वह विकल्प आपके MTA
एंथन

3

डेबियन 7 पर मैं अभी भी इस प्रश्न के उत्तर का उपयोग करके प्रेषक पते को सही ढंग से सेट करने में असमर्थ था, (हमेशा सर्वर का होस्टनाम होगा) लेकिन इसे इस तरह से हल किया।

वारिस-मेलएक्स स्थापित करें

apt-get install heirloom-mailx

यह सुनिश्चित करें कि यह डिफ़ॉल्ट है।

update-alternatives --config mailx

एक संदेश लिखें।

mail -s "Testing from & replyto" -r "sender <sender@example.com>" -S replyto="sender@example.com" recipient@example.net < <(echo "Test message")

यह update-alternativesआज्ञा क्या कर रही है? यह मुझे 3 विकल्प देता है और मैं हैरान हूं।
स्टीफन


1

echo "body" | mail -S from=address@foo.com "Hello"

-S आपको हेडर को संशोधित करने का सबसे आसान तरीका और इस तरह से बहुत सारे स्ट्रिंग विकल्प निर्दिष्ट करता है।



0

यह मेरे लिए काम किया

echo "hi root"|mail -rsawrub@testingdomain.org -s'testinggg' root

0

CentOS 5.5 पर, मैंने डोमेन से डिफ़ॉल्ट सेट करने के लिए सबसे आसान तरीका मेजबान फ़ाइल को संशोधित करना है। यदि आपकी होस्ट फ़ाइल में आपका WAN / सार्वजनिक IP पता है, तो इसके लिए सूचीबद्ध पहले होस्टनाम को संशोधित करें। उदाहरण के लिए, आपकी होस्ट फ़ाइल दिख सकती है:

...
11.22.33.44 लोकलहोस्ट डिफॉल्ट-डोमेन जो भी-else.com
...

इसे भेजने के लिए जो भी-else.com है, बस इसे संशोधित करें ताकि जो भी-else.com पहले सूचीबद्ध हो, उदाहरण के लिए:

...
11.22.33.44 जो भी-else.com लोकलहोस्ट डिफ़ॉल्ट-डोमेन
...

मैं किसी अन्य डिस्ट्रो (या सेंटोस के संस्करण) के लिए भी नहीं बोल सकता, लेकिन मेरे विशेष मामले में, उपरोक्त पूरी तरह से काम करता है।


0

मुझे एन्कोडिंग और फ़ाइल संलग्नक के Ubuntu 16.04साथ कस्टम उत्तर देने की अनुमति क्या है UTF-8:

मेल क्लाइंट स्थापित करें:

sudo apt-get install heirloom-mailx

SMTP कॉन्फ़िगरेशन संपादित करें:

sudo vim /etc/ssmtp/ssmtp.conf
mailhub=smtp.gmail.com:587
FromLineOverride=YES
AuthUser=???@gmail.com
AuthPass=???
UseSTARTTLS=YES

मेल भेजें:

sender='send@domain.com'
recipient='recipient@domain.com'
zipfile="results/file.zip"
today=`date +\%d-\%m-\%Y`
mailSubject='My subject on the '$today
read -r -d '' mailBody << EOM
Find attached the zip file.

Regards,
EOM
mail -s "$mailSubject" -r "Name <$sender>" -S replyto="$sender" -a $zipfile $recipient < <(echo $mailBody)

0

उपरोक्त समाधानों में से कोई भी मेरे लिए काम नहीं कर रहा है ...

#!/bin/bash

# Message
echo "My message" > message.txt

# Mail
subject="Test"
mail_header="From: John Smith <john.smith@example.com>"
recipients="recipient@example.com"

#######################################################################
cat message.txt | mail -s "$subject" -a "$mail_header" -t "$recipients"

-1

CentOS5 पर मेरे लिए काम नहीं करने से पहले दिए गए उत्तर। मैंने म्यूट इंस्टॉल किया। इसके पास बहुत सारे विकल्प हैं। म्यूट के साथ आप इस तरह से करते हैं:

export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.