जवाबों:
mail
आसपास कई अलग-अलग संस्करण हैं । जब आप आगे बढ़ते हैं mail -s subject to1@address1 to2@address2 <body
(भेजने के लिए, वह सभी POSIX गारंटी है - और यहां तक -s
कि पुराने दिनों में मौजूद नहीं था ), तो वे अलग-अलग अनुभाग विकल्प रखते हैं। एक अतिरिक्त हेडर जोड़ना हमेशा आसान नहीं होता है।
कुछ के साथ mailx
कार्यान्वयन, जैसे से mailutils
Ubuntu पर या डेबियन केbsd-mailx
, यह आसान है कि के लिए एक विकल्प है क्योंकि।
mailx -a 'Content-Type: text/html' -s "Subject" to@address <test.html
Heirloom के साथ mailx
, कोई सुविधाजनक तरीका नहीं है। editheaders=1
बाहरी हेडर डालने की एक संभावना बाहरी संपादक को सेट करना और उसका उपयोग करना है (जो एक स्क्रिप्ट हो सकती है)।
## Prepare a temporary script that will serve as an editor.
## This script will be passed to ed.
temp_script=$(mktemp)
cat <<'EOF' >>"$temp_script"
1a
Content-Type: text/html
.
$r test.html
w
q
EOF
## Call mailx, and tell it to invoke the editor script
EDITOR="ed -s $temp_script" heirloom-mailx -S editheaders=1 -s "Subject" to@address <<EOF
~e
.
EOF
rm -f "$temp_script"
एक सामान्य POSIX के साथmailx
, मुझे नहीं पता कि हेडर कैसे प्राप्त करें।
यदि आप किसी भी mail
या का उपयोग करने जा रहे हैं mailx
, तो ध्यान रखें कि
mail
और कई विकल्प हैं mailx
।mail
और आदेशों के mailx
साथ शुरू होने वाली रेखाओं का व्यवहार करता है ~
। यदि आप पाठ को पाइप करते हैं mail
, तो आपको इस पाठ की व्यवस्था करने की आवश्यकता है, जिसमें शुरुआत के साथ लाइनें न हों ~
।यदि आप वैसे भी सॉफ़्टवेयर इंस्टॉल करने जा रहे हैं, तो आप mail
/ Mail
/ से अधिक पूर्वानुमानित कुछ भी इंस्टॉल कर सकते हैं mailx
। उदाहरण के लिए, उत्परिवर्तन । मट के साथ, आप -H
विकल्प के साथ इनपुट में अधिकांश हेडर की आपूर्ति कर सकते हैं , लेकिन नहींContent-Type
, जिसे म्यूट विकल्प के माध्यम से सेट करने की आवश्यकता है।
mutt -e 'set content_type=text/html' -s 'hello' 'to@address' <test.html
या आप sendmail
सीधे आह्वान कर सकते हैं। वहाँ से sendmail
बाहर कई संस्करण हैं , लेकिन वे सभी sendmail -t
मेल से प्राप्तकर्ताओं की सूची को पढ़ते हुए, सरलतम तरीके से एक मेल भेजने के लिए समर्थन करते हैं । (मुझे लगता है कि वे सभी समर्थन नहीं करते हैं Bcc:
।) अधिकांश प्रणालियों sendmail
में, सामान्य रूप से नहीं है $PATH
, यह अंदर है /usr/sbin
या है /usr/lib
।
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: to@address
Subject: hello
Content-Type: text/html
EOF
#!/bin/sh
(
echo "To: me@example.com"
echo "Subject: hello"
echo "Content-Type: text/html"
echo
echo "<html><b><font size='7'>H</font>ello</b></html>"
echo
) | /usr/sbin/sendmail -t
हीरलूम मेलएक्स के साथ, सुविधाजनक तरीका है
mailx -s "$(echo -e "Newsletter issue 3\nContent-Type: text/html")" user@server.com < /tmp/htmlmail.txt
धन्यवाद, दोस्त
ने फेडोरा 17 पर परीक्षण किया, और काम किया
ऐसा करने के Content-Type
लिए आपको अपने ईमेल में हेडर जोड़ना होगा।
echo "<html><b>Hello</b></html>" | mail -a "Content-type: text/html;" -s "Testing" me@example.com
काम करेगा
mailx
? इसका विकल्प हो सकता है। अगर वह काम नहीं करता है। यदि वह काम नहीं करता है, तो आप उत्परिवर्तन का उपयोग करने पर विचार कर सकते हैं, हालांकि मुझे यह पता नहीं है कि कमांड लाइन स्विच क्या करता है।
हिरलूम-मेलक्स के साथ आप अपने हुक लिपि में सेंडमेल प्रोग्राम को बदल सकते हैं, वहां हेडर बदल सकते हैं और फिर सेंडमेल का उपयोग कर सकते हैं।
मेरे द्वारा उपयोग की जाने वाली स्क्रिप्ट ( ~/bin/sendmail-mailx-hook
):
#!/bin/bash
sed '1,/^$/{
s,^\(Content-Type: \).*$,\1text/html; charset=utf-8,g
s,^\(Content-Transfer-Encoding: \).*$,\18bit,g
}' | sendmail $@
यह स्क्रिप्ट मेल हेडर में दिए गए मानों को इस प्रकार बदलती है:
Content-Type:
सेवा text/html; charset=utf-8
Content-Transfer-Encoding:
करने के लिए 8bit
(यकीन है कि अगर यह वास्तव में जरूरत है नहीं)।HTML ईमेल भेजने के लिए:
mailx -Ssendmail='~/bin/sendmail-mailx-hook' -s "subject" xxxxx@gmail.com < test.html
यह विधि @Gilles द्वारा प्रस्तावित की तुलना में अधिक प्रभावी है क्योंकि यह अस्थायी फ़ाइलों को नहीं बनाता है और बस ऑन-द-फ्लाई को ठीक करता है।
मैंने नीचे दी गई स्क्रिप्ट का उपयोग करने के लिए किया है
#!/bin/ksh
(
echo "To: yourmail@domain.com"
echo "Subject: Job Status"
echo "Content-Type: text/html"
echo
echo "<html>
<head>
<title>Status of the jobs during the day</title>
<style>
table, th, td {
border: 1px solid blue;
border-collapse: collapse;
}
th, td {
padding: 5px;
}
</style>
</head>
<body>
<table style='width:100%'>
<tr bgcolor='#808080'>
<th>Job Name</th>
<th>System name</th>
<th>Status</th>
</tr>
<tr>
<td>Job-1</td>
<td>Sys</td>
<td>Sucess</td>
</tr>
<tr>
<td>Job-2</td>
<td>sys</td>
<td>Failure</td>
</tr>
<tr>
<td>Job-3</td>
<td>sys</td>
<td>Sucess</td>
</tr>
</table>
</body></html>"
echo
) | /usr/sbin/sendmail -t
मेरे लिए मुझे SMTP सर्वर जैसे चर को निर्दिष्ट करने की आवश्यकता थी, इसलिए मेल कमांड ने नीचे के फैशन में काम किया। मैंने कई पोस्ट खोजे, और मैंने शरीर को टेक्स्ट / html में बदलने के लिए संपत्ति के नीचे पाया। अब जो ईमेल मुझे मिलता है वह HTML फॉर्मेट में है।
सामग्री-विवाद: इनलाइन
यूनिक्स संस्करण: Red Hat Enterprise Linux सर्वर रिलीज़ 6.6 (सैंटियागो)
प्रथम। स्क्रिप्ट में जो भी जानकारी चाहिए वह बनाएं (testSql.sh)
echo "<html><body><pre>"
mysql -u USERNAME -pPASSWORD -P PORTNUMBER -h HOSTNAME DBNAME --table -e "select columns from tablename where member in ('value1','value2')"
echo "</pre></body></html>"
दूसरा। उस स्क्रिप्ट को मेल कमांड पर पाइप करें
./testSql.sh | mail -v -S smtp=smtp://IP:PORTNUMBER -s "$(echo -e "This is the subject\nContent-Type: text/ht ml\nMIME-Version: 1.0\nContent-Disposition: inline")" userid@email.com
ऐसा करने से मुझे ईमेल में नीचे दी गई जानकारी मिलती है:
सामग्री-विवाद: इनलाइन संदेश-आईडी: उपयोगकर्ता-एजेंट: Heirloom mailx 12.4 7/29/08 MIME- संस्करण: 1.0 सामग्री-प्रकार: पाठ / सादा; charset = us-ascii सामग्री-अंतरण-एन्कोडिंग: 7bit मान १ मान २
TestSql.sh में किए गए HTML टैगिंग के अनुसार मान 1 और मान 2
cat htmlfile.html | mail -s "subject" xx@example.com