লিনাক্স কমান্ড লাইন ব্যবহার করে আমি কীভাবে একটি ফাইল ইমেল সংযুক্তি হিসাবে প্রেরণ করব?


289

আমি এমন একটি স্ক্রিপ্ট তৈরি করেছি যা প্রতি রাতে আমার লিনাক্স সার্ভারে চালিত mysqldumpহয় যা আমার প্রতিটি মাইএসকিউএল ডাটাবেস .sql ফাইল এবং প্যাকেজগুলিকে সংকুচিত .tar ফাইল হিসাবে একত্রে ব্যাকআপ করতে ব্যবহার করে। পরবর্তী পদক্ষেপটি আমি সম্পাদন করতে চাই সেটি হল নিরাপদ রক্ষার জন্য দূরবর্তী ইমেল সার্ভারে ইমেলের মাধ্যমে সেই টার ফাইলটি প্রেরণ করা। আমি পছন্দ করতে ব্যাকআপ পাঠ্য ফাইলটি পাইপ করে শরীরে কাঁচা স্ক্রিপ্ট একটি ইমেল পাঠাতে সক্ষম হয়েছি mailx:

$ cat mysqldbbackup.sql | mailx backup@email.com

catব্যাকআপ ফাইলের পাঠ্যটি প্রতিধ্বনিত করে যা mailxপ্রাপকের ইমেল ঠিকানাটি একটি আর্গুমেন্ট হিসাবে পাসের মাধ্যমে প্রোগ্রামে পাইপ করা হয় ।

এটি আমার যা প্রয়োজন তা পূরণ করে, আমি মনে করি এটি আরও এক ধাপ আরও ভাল হতে পারে , শেল স্ক্রিপ্টগুলি ব্যবহার করে বা অন্যথায় সংযুক্তি হিসাবে বহির্গামী ইমেল বার্তায় সংক্ষেপিত .tar ফাইলটি প্রেরণ করার কোনও উপায় আছে কি ? এটি খুব দীর্ঘ ইমেল বার্তাগুলি মোকাবেলা করতে মারবে যা শিরোনামের ডেটা ধারণ করে এবং প্রায়শই শব্দ-মোড়ক সংক্রান্ত সমস্যা ইত্যাদি থাকে etc.


1
আপনি কি স্ক্রিপ্টটি ভাগ করতে পারেন যা আপনার মাইএসকিউএল ডেটাবেসগুলিকে ব্যাকআপ করে?
Almino মেলো

দুঃখিত, আমি কিছুক্ষণের জন্য এটি করছি না। আমি জানি এটি চাওয়া mysqldumpএবং তারপরে কোনও ইমেলের আউটপুট সংযুক্ত করা (এর সাথে mutt) জড়িত । আমার এমনকি এমন একটি
পদক্ষেপও

1
নিখুঁতভাবে কৌতূহলী, আপনার ব্যাকআপগুলি বনাম স্কিপগুলিতে ইমেল করুন বা সেগুলিকে সংযুক্ত করুন?
jchook

উত্তর:


298

মুত্তদের কেউই আমার পক্ষে কাজ করেনি। ভাবছিল ইমেল ঠিকানাটি আক্রমণকারীটির অংশ। করতে হয়েছিল:

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com

1
আমি 1.5-21 (2010-09-15) মুট ব্যবহার করছি এবং এটির প্রাপকের ইমেল হওয়ার পরে একটি প্যারামিটার প্রয়োজন
নুরেটিন

ওপেনসুএস লিপ ৪২.১-তে মুট 1.5-24 (2015-08-30) ব্যবহার করে আমার জন্য কাজ করেছেন।
অ্যান্টোনিও ভিনিসিয়াস মেনেজেস মেদেই

3
@ পলিটিকাল মানে "বিকল্পের সমাপ্তি"। কটাক্ষপাত unix.stackexchange.com/questions/11376/...
rynop

ব্যতিক্রম এবং প্রেরণে পুনরায় চেষ্টা করার জন্য কি চেক করার কোনও উপায় আছে?
ti034

79

বা, ব্যর্থ মুট:

gzip -c mysqldbbackup.sql | uuencode mysqldbbackup.sql.gz  | mail -s "MySQL DB" backup@email.com

26
এটি সংযুক্তি হিসাবে নয় , ইউইনকোডযুক্ত অংশটি ইনলাইন প্রেরণ করে । অনেক মেল-ক্লায়েন্ট এটিকে স্বীকৃতি দেয় এবং সংযুক্তি হিসাবে ইউইনকোড অংশটি প্রদর্শন করে।
FuePi

4
এই দিন এবং যুগে ইউয়েনকোড ব্যবহার করবেন না। মাইম সামান্য জটিল তবে অনেক বেশি ব্যবহারকারী-বান্ধব।
ট্রিপলি

@ ডেভিডগিভন: উদাহরণস্বরূপ দেখুন (দ্রুত নজরে) এই প্রশ্নের অন্যান্য সমস্ত উত্তর।
ট্রিপলি

6
তাদের কেউই মেল ব্যবহার করেন না!
ডেভিড

তারপরে স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 33৩১1১74৪/২ এবং text/htmlআপনার সংযুক্তিটির জন্য মাইম টাইপটি যেভাবে বোঝায় তা প্রতিস্থাপন করুন। (এই application/gzip
দৃ concrete়

43

আপনার লিনাক্স সংস্করণের উপর নির্ভর করে এটিকে মেল বলা যেতে পারে। উপরের ডেভিডের উদ্ধৃতি দিতে:

mail -s "Backup" -a mysqldbbackup.sql backup@email.com < message.txt

বা এছাড়াও:

cat message.txt | mail -s "Backup" -a mysqldbbackup.sql backup@email.com 

@ কারেলব্লেক: অন্য বিকল্পটি কেমন?
নাথান ফেলম্যান

উভয় সমাধানই আমার পক্ষে কাজ করে না। আমি আউটলুক 2013 এর সাথে ইমেল পেয়েছি এবং
মেলটিতে

2
আমার -a, --append=HEADER: VALUE append given header to the message being sent
ম্যানপেজটি

2
নাথন, দেখে মনে হচ্ছে আপনার ডেভিডের উক্তিটি ভুল - তিনি muttআদেশটি ব্যবহার করেছিলেন , না mail। এছাড়াও অন্যরা উল্লেখ করেছে যে, মিট এখন --ঠিকানার আগে একটি যুক্তি প্রয়োজন । এবং আমি দেখতে পেয়েছি যে @ ইজুহুমা এবং আমি আসলে -aবিকল্পটি কী করে তাতে সম্মত mail- আমি সেখানে এক মিনিটের জন্য বিভ্রান্ত হয়ে
পড়েছিলাম

7
-এর পরিবর্তে আপনার ব্যবহার করা উচিত -এ: -a, --append=HEADER: VALUE append given header to the message being sent -A, --attach=FILE attach FILE
ভিক্টর পেরভ

41

তাকানো থেকে man mailx, মেলেক্স প্রোগ্রামে কোনও ফাইল সংযুক্ত করার বিকল্প নেই। আপনি মুত্তের মতো আরও একটি প্রোগ্রাম ব্যবহার করতে পারেন।

echo "This is the message body" | mutt -a file.to.attach -s "subject of message" recipient@domain.com

মুটের জন্য কমান্ড লাইন বিকল্পগুলি দেখানো যেতে পারে mutt -h


ধন্যবাদ! এটি কৌশলটি করেছে, ক্রিয়াটি নিঃশব্দে করতে মুট পেতে আমার সমস্যা হচ্ছে।
কিট রোড

10
নীচের উত্তর দেখুন ( stackoverflow.com/a/9524359/10608 ) কারণ আপাতভাবে সিনট্যাক্স মুটের জন্য পরিবর্তিত হয়েছে যার এখন একটি প্রয়োজন --
আলেকজান্ডার বার্ড

29

আমি সেন্ডমেইল ব্যবহার করি যা এই দৃশ্যের জন্য তৈরি হয়েছিল। এটি উবুন্টুর জন্য প্যাকেজড তাই আমি ধরে নিই এটি উপলব্ধ

sendemail -f sender@some.where -t receiver@some.place -m "Here are your files!" -a file1.jpg file2.zip

http://caspian.dotconf.net/menu/Software/SendEmail/


আমি বিশ্বাস করি, এটি আপনার উদাহরণে "সেন্ডইমেল" এর পরিবর্তে "সেন্ডইমেল" হওয়া উচিত।
ডেভিট

1
হ্যাঁ এবং না - উৎস (Caspian) ই বড়হাতের একটি ব্যবহার করে, যখন এই কমান্ড লাইন টুলস জন্য বিরল নামকরণ কৌশল (ইউনিক্স বিশ্বের) হল, অন্তত এই সফটওয়্যার এর উবুন্টু প্যাকেজিং উভয় উপলব্ধ sendemailএবং sendEmailমধ্যে /usr/bin/
ফ্রেডরিক ওয়েন্ড্ট

আমার জুবুন্টু 14.04.3 ইনস্টল করা নেইSendEmail
ভিটালি জেডনেভিচ

3
কমান্ডটি কাজ করার জন্য ক্ষেত্র থেকে বাধ্যতামূলকভাবে সেন্ডইমেল ইনস্টল করতে "sudo apt install sendemail" এবং ক্ষেত্র থেকে বাধ্যতামূলক যুক্ত করুন "-f mandtory@email.com"। sendemail -f mandatory@email.com-t to@some.one -m "Here are your files!" -a file1.jpg file2.zip
সাইলেন্দ্র পিনুপোলু

28

আমি এমপ্যাক ব্যবহার করি

mpack -s subject file user@example.com

দুর্ভাগ্যক্রমে এমপ্যাক স্ট্যান্ডিনের একটি উপাধি হিসাবে '-' স্বীকৃতি দেয় না। তবে নীচের কাজগুলি, এবং সহজেই একটি (শেল) ওরফে বা স্ক্রিপ্টে আবৃত হতে পারে:

mpack -s subject /dev/stdin loser@example.com < file

এটি স্টিডিনের জন্য বাশে কাজ করতে পারে। আমার এমপ্যাক নেই, তাই আমি চেষ্টা করে mpack -s subject /dev/stdin loser@example.com <(stdout_generating_program)
দেখিনি

23
 echo 'These are contents of my mail' | mailx -s 'This is my email subject' -a /path/to/attachment_file.log email_id@example.com

4
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। ডিফল্ট মেলেক্স ব্যবহার করে এবং পুরোপুরি কাজ করে। মুট v1.5.21 ক্রোন ব্যবহার করার সময়> 1 এমবি সংযুক্তি প্রেরণ করতে অস্বীকার করে।
জোসেফ

আমি এমন কিছু খুঁজছিলাম যা ইসি 2 তে কাজ করে এবং এটি ভাল কাজ করেছে।
একাকীত্ব

6
mailxসঠিকভাবে মানক করা হয় না। যে কোনও উত্তর যা এটির প্রস্তাব দেয় তা এই সতর্কতা নির্দেশ করে। সাধারণ ব্যবহারে কমপক্ষে তিনটি বেমানান বৈকল্পিক রয়েছে।
ট্রিপলি

13

আমি একবার সোলারিসে ksh এর জন্য এই ফাংশনটি লিখেছিলাম (বেস 64 এনকোডিংয়ের জন্য পার্ল ব্যবহার করে):

# usage: email_attachment to cc subject body attachment_filename
email_attachment() {
    to="$1"
    cc="$2"
    subject="$3"
    body="$4"
    filename="${5:-''}"
    boundary="_====_blah_====_$(date +%Y%m%d%H%M%S)_====_"
    {
        print -- "To: $to"
        print -- "Cc: $cc"
        print -- "Subject: $subject"
        print -- "Content-Type: multipart/mixed; boundary=\"$boundary\""
        print -- "Mime-Version: 1.0"
        print -- ""
        print -- "This is a multi-part message in MIME format."
        print -- ""
        print -- "--$boundary"
        print -- "Content-Type: text/plain; charset=ISO-8859-1"
        print -- ""
        print -- "$body"
        print -- ""
        if [[ -n "$filename" && -f "$filename" && -r "$filename" ]]; then
            print -- "--$boundary"
            print -- "Content-Transfer-Encoding: base64"
            print -- "Content-Type: application/octet-stream; name=$filename"
            print -- "Content-Disposition: attachment; filename=$filename"
            print -- ""
            print -- "$(perl -MMIME::Base64 -e 'open F, shift; @lines=<F>; close F; print MIME::Base64::encode(join(q{}, @lines))' $filename)"
            print -- ""
        fi
        print -- "--${boundary}--"
    } | /usr/lib/sendmail -oi -t
}

8
জিএনইউ / লিনাক্সে, কেউ base64এনকোডিংয়ের জন্য
পার্লের

12

সংযুক্তি সহ ইমেল প্রেরণের জন্য আপনি মুট ব্যবহার করতে পারেন

mutt -s "Backup" -a mysqldbbackup.sql backup@email.com < message.txt

2
কমপক্ষে 1.5-21 মুবত (উবুন্টু বিশ্বাসযোগ্য) হিসাবে, আপনাকে -aপ্রাপকের পরে বিকল্পটি রাখা দরকার : mutt -s "Backup" backup@email.com -a mysqldbbackup.sql < message.txtঅথবা --রিনপের উত্তর হিসাবে প্রদর্শিত হিসাবে প্রাপকের আগে বিকল্পটি ব্যবহার করুন ।
nealmcb

10

মেলেক্সের সাথে একটি সাধারণ প্লেটেক্সট সংযুক্তি সহ একটি বাদি ইমেল পাঠান:

(
  /usr/bin/uuencode attachfile.txt myattachedfilename.txt; 
  /usr/bin/echo "Body of text"
) | mailx -s 'Subject' youremail@gmail.com

নীচে নতুন লাইনগুলি ছাড়া উপরের মত একই কমান্ড দেওয়া আছে

( /usr/bin/uuencode /home/el/attachfile.txt myattachedfilename.txt; /usr/bin/echo "Body of text" ) | mailx -s 'Subject' youremail@gmail.com

আপনার /home/el/attachfile.txtএই বিষয়বস্তুগুলির সাথে সংজ্ঞায়িত কোনও ফাইল রয়েছে তা নিশ্চিত করুন :

<html><body>
Government discriminates against programmers with cruel/unusual 35 year prison
sentences for making the world's information free, while bankers that pilfer 
trillions in citizens assets through systematic inflation get the nod and 
walk free among us.
</body></html>

যদি আপনার ইউয়েনকোড না থাকে তবে এটি পড়ুন: /unix/16277/how-do-i-get-uuencode-to-work

লিনাক্সে, সেন্ডমেল সহ পিডিএফ সংযুক্তি সহ এইচটিএমএল বডি ইমেল প্রেরণ করুন:

নিশ্চিত হয়ে নিন যে আপনি ksh ইনস্টল করেছেন: yum info ksh

আপনি সেন্ডমেল ইনস্টল এবং কনফিগার করেছেন তা নিশ্চিত করুন।

আপনি ইউয়েনকোড ইনস্টল করেছেন এবং উপলভ্য করেছেন তা নিশ্চিত করুন: /unix/16277/how-do-i-get-uuencode-to-work

কল করা একটি নতুন ফাইল তৈরি করুন test.sh এবং এটি আপনার হোম ডিরেক্টরিতে রেখে দিন:/home/el

নিম্নলিখিত কোডটি রাখুন test.sh:

#!/usr/bin/ksh
export MAILFROM="el@defiant.com"
export MAILTO="youremail@gmail.com"
export SUBJECT="Test PDF for Email"
export BODY="/home/el/email_body.htm"
export ATTACH="/home/el/pdf-test.pdf"
export MAILPART=`uuidgen` ## Generates Unique ID
export MAILPART_BODY=`uuidgen` ## Generates Unique ID

(
 echo "From: $MAILFROM"
 echo "To: $MAILTO"
 echo "Subject: $SUBJECT"
 echo "MIME-Version: 1.0"
 echo "Content-Type: multipart/mixed; boundary=\"$MAILPART\""
 echo ""
 echo "--$MAILPART"
 echo "Content-Type: multipart/alternative; boundary=\"$MAILPART_BODY\""
 echo ""
 echo "--$MAILPART_BODY"
 echo "Content-Type: text/plain; charset=ISO-8859-1"
 echo "You need to enable HTML option for email"
 echo "--$MAILPART_BODY"
 echo "Content-Type: text/html; charset=ISO-8859-1"
 echo "Content-Disposition: inline"
 cat $BODY
 echo "--$MAILPART_BODY--"

 echo "--$MAILPART"
 echo 'Content-Type: application/pdf; name="'$(basename $ATTACH)'"'
 echo "Content-Transfer-Encoding: uuencode"
 echo 'Content-Disposition: attachment; filename="'$(basename $ATTACH)'"'
 echo ""
 uuencode $ATTACH $(basename $ATTACH)
 echo "--$MAILPART--"
) | /usr/sbin/sendmail $MAILTO

শীর্ষে রফতানি ভেরিয়েবলগুলি পরিবর্তন করুন test.shআপনার ঠিকানা এবং ফাইলের নামগুলি প্রতিফলিত করতে ।

একটি পরীক্ষার পিডিএফ ডকুমেন্টটি ডাউনলোড করুন এবং এতে রাখুন /home/el পিডিএফ-টেস্ট.পিডিএফ রাখুন

/Home/el/email_body.htm নামে একটি ফাইল তৈরি করুন এবং এতে এই লাইনটি দিন:

<html><body><b>this is some bold text</b></body></html>

নিশ্চিত করুন যে পিডিএফ ফাইলের পর্যাপ্ত 755 অনুমতি রয়েছে।

স্ক্রিপ্ট চালান ./test.sh

আপনার ইমেল ইনবক্সটি পরীক্ষা করুন, পাঠ্যটি HTML ফর্ম্যাটে হওয়া উচিত এবং পিডিএফ ফাইলটি স্বয়ংক্রিয়ভাবে বাইনারি ফাইল হিসাবে ব্যাখ্যা করা উচিত। দিনে 15 বার বলার চেয়ে এই ফাংশনটি ব্যবহার না করার বিষয়ে সতর্কতা অবলম্বন করুন, এমনকি আপনি নিজের কাছে ইমেলগুলি প্রেরণ করলেও, জিমেইলে থাকা স্প্যাম ফিল্টারগুলি আপনাকে কোনও সুযোগ না দিয়েই কোনও ডোমেন বানানোর ইমেলগুলি ব্ল্যাকলিস্ট করতে পারে। এবং আপনি এটি আর কাজ করে না দেখবেন বা এটি কেবল সংযুক্তির মাধ্যমেই দেয়, বা ইমেলটি মোটেই আসে না। যদি আপনাকে এটি নিয়ে প্রচুর পরীক্ষা করতে হয় তবে কয়েক দিন ধরে এগুলি ছড়িয়ে দিন বা আপনাকে একটি স্প্যামার হিসাবে চিহ্নিত করা হবে এবং এই ফাংশনটি আর কাজ করবে না।


1
আমার জন্য এটি অন্যভাবে কাজ করেছিল worked (echo 'Email Body'; uuencode filename filename) | mailx -s 'Subject' user@domain.com
ভিকি

uuencodeহয় না সঠিকভাবে একটি সংযুক্তি। এটি অন্য কিছু পাঠ্যের মাঝখানে কেবল একটি পাঠ্য-পাঠ্য ব্লব এম্বেড করে। কোনও ভাল প্রক্রিয়া না থাকলে এটি সূক্ষ্মভাবে কাজ করত, তবে এটি 20+ বছর আগে।
ট্রিপলি

9

এখানে বেশ কয়েকটি উত্তর প্রস্তাব করা হচ্ছে mailবাmailx তাই আপনাকে প্রসঙ্গে এইগুলি ব্যাখ্যা করতে সহায়তা করার জন্য এটি আরও একটি পটভূমি।

.তিহাসিক নোট

ইউনিক্সের উত্স mailবেল ল্যাবস ইউনিক্স early (1969?) এর প্রাথমিক ইতিহাসের মুস্টগুলিতে ফিরে যায় এবং আমরা সম্ভবত এখানে এর সম্পূর্ণ বংশানুক্রমে যাওয়ার আশা করতে পারি না। এটি বলার পক্ষে যথেষ্ট যে এখানে এমন অনেক প্রোগ্রাম রয়েছে যা কোডটি রিমিমপ্লিট করে বা পুনরায় সংশোধন করে (বা এর পুনর্বিবেচনার কোড থেকে উত্তরাধিকার সূত্রে প্রাপ্ত) mailএবং এমন একটিও কোড বেস নেই যা নির্বিঘ্নে "" হিসাবে চিহ্নিত করা যায় mail

যাইহোক, সেই অবস্থানের একজন প্রার্থী হলেন অবশ্যই "বার্কলে মেল" যা মূলত 2 Mailবিএসডি (1978) এ বড় হাতের এম দিয়ে ডাকা হয়েছিল ; কিন্তু 3BSD (1979) এ এটি ছোট হাতের mailকমান্ডও প্রতিস্থাপন করেছিল এবং এর ফলে কিছুটা নতুন বিভ্রান্তির সৃষ্টি হয়েছিল। SVR3 (1986) একটি অমৌলিক যা বলা হত অন্তর্ভুক্ত mailx। দ্যxসম্ভবতঃ এটি অনন্য ও স্বতন্ত্র করতে যোগ করা হয়েছিল; তবে এটিও এখন অনুলিপি করা হয়েছে, পুনরায় প্রয়োগ করা হয়েছে, এবং বিকৃত করা হয়েছে যাতে কোনও একক স্বতন্ত্র সংস্করণটি সংজ্ঞায়িত না হয়।

আগের দিন, বৈদ্যুতিন মেল জুড়ে বাইনারি প্রেরণের জন্য ডি-ফ্যাক্টো স্ট্যান্ডার্ডটি ছিল uuencode। এটি এখনও বিদ্যমান, তবে ব্যবহারযোগ্যতার অসংখ্য সমস্যা রয়েছে; যদি কিছুটা সম্ভব হয় তবে তার পরিবর্তে আপনার MIME সংযুক্তি প্রেরণ করা উচিত, যদি না আপনি বিশেষত 1980 এর দশকের শেষের দিকে যোগাযোগ করতে সক্ষম হবেন না।

এমআইএমই 1990 চালু হয় একটি একক অক্ষরসমষ্ঠিতে প্লেইন টেক্সট চেয়ে বিষয়বস্তু অন্যান্য বিভিন্ন ধরনের জন্য সমর্থন যা শুধুমাত্র সত্যিই ইংরেজি একটি উপসেট (এবং জন্য উপযুক্ত সহ ইমেল দিয়ে বেশ কিছু সমস্যা, সমাধান, আমাদের বলা হয়, Hawai'ian )। এটি মাল্টিপার্ট বার্তাগুলি, আন্তর্জাতিকীকরণ, সমৃদ্ধ সামগ্রীর ধরণের ইত্যাদির জন্য সমর্থন প্রবর্তন করে এবং 1990 এর দশকে দ্রুত ট্র্যাকশন অর্জন করেছিল।

( হিরলুম mail/ mailxইতিহাস নোটগুলি এটি রচনা করার সময় সর্বাধিক সহায়ক ছিল এবং আপনি যদি এই ধরণের জিনিসটিতে থাকেন তবে অবশ্যই এটি পড়ার পক্ষে উপযুক্ত))

বর্তমান অফার

2018 হিসাবে, ডিবিয়ানের তিনটি প্যাকেজ রয়েছে যার মধ্যে একটি mailবা mailxকমান্ড অন্তর্ভুক্ত রয়েছে । (আপনি অনুসন্ধান করতে পারেন Provides: mailx।)

debian$ aptitude search ~Pmailx
i   bsd-mailx                       - simple mail user agent
p   heirloom-mailx                  - feature-rich BSD mail(1)
p   mailutils                       - GNU mailutils utilities for handling mail

(আমি একটি সুপারিশ হিসাবে দেবিয়ানকে বাদ দিচ্ছি না; এটি আমি যা ব্যবহার করি তাই এটির সাথে আমি পরিচিত; এবং এটি তাদের নিজস্ব প্যাকেজের নাম উল্লেখ করে বিভিন্ন বিকল্পকে নির্বিঘ্নে পার্থক্য করার একটি উপায় সরবরাহ করে obvious এটি স্পষ্টতই খারাপ দিক থেকেও বিভ্রান্ত যা উবুন্টু এই প্যাকেজগুলি পায়))

এই উদ্বেগগুলির সাথে, যদি আপনার কোডটি পোর্টেবল হওয়ার প্রয়োজন হয় এবং কিছুটা জটিল প্যাকেজের উপর নির্ভর করতে পারে তবে এমআইএমএইচ সংযুক্তিগুলি বহন করার সহজ উপায়টি হ'ল ব্যবহার করা mutt


আমি মূলত একটি পরিমিতরূপে জনপ্রিয় ডুপ্লিকেট প্রশ্নের উত্তর হিসাবে এই পোস্ট stackoverflow.com/questions/902591/...
tripleee

4

আরেকটি বিকল্প - সোয়াকস (এসএমটিপির জন্য সুইস আর্মি ছুরি)।

swaks -tls \
    --to ${MAIL_TO} \
    --from ${MAIL_FROM} \
    --server ${MAIL_SERVER} \
    --auth LOGIN \
    --auth-user ${MAIL_USER} \
    --auth-password ${MAIL_PASSWORD} \
    --header "Subject: $MAIL_SUBJECT" \
    --header "Content-Type: text/html; charset=UTF-8" \
    --body "$MESSAGE" \
    --attach mysqldbbackup.sql

2

মেটামাইলে রয়েছে সরঞ্জাম মেটাসেন্ড

metasend -f mysqlbackup.sql.gz -t backup@email.com -s Backup -m application/x-gzip -b

এটি প্রায় সর্বত্র ইনস্টল করা হত, তবে প্রায় কখনও ব্যবহৃত হয়নি। কারণ এটি দীর্ঘদিন ধরে অবিস্মরণীয় ছিল (এবং এখনও এটি আফাইক) এটি অনেক প্ল্যাটফর্মের ডি-ফ্যাক্টো স্ট্যান্ডার্ড টুলসেট থেকে সরানো হয়েছে ।
ট্রিপলি


1

আমি সাধারণত আরএইচইএল-তে কেবল মেল কমান্ড ব্যবহার করি। আমি মেলেক্স চেষ্টা করেছি এবং এটি বেশ দক্ষ।

mailx -s "Sending Files" -a First_LocalConfig.conf -a
Second_LocalConfig.conf Recipient@myemail.com

This is the content of my msg.

.

1

আমার পক্ষে সবচেয়ে সংক্ষিপ্ততম উপায়

file=filename_or_filepath;uuencode $file $file|mail -s "optional subject" email_address

সুতরাং আপনার উদাহরণের জন্য এটি হতে হবে

file=your_sql.log;gzip -c $file;uuencode ${file}.gz ${file}|mail -s "file with magnets" ph.gachoud@gmail.com

ভাল অংশটি হ'ল আমি অন্য ফাইলটি প্রেরণের জন্য এটি Ctrl + r এর সাথে স্মরণ করতে পারি ...


ধনুর্বন্ধনীগুলি আপনাকে খুব ভাল করতে পারে না তবে সম্পূর্ণ পোর্টেবল হওয়ার জন্য আপনার ভেরিয়েবলগুলির চারপাশে ডাবল উদ্ধৃতি ব্যবহার করা উচিত। আরও দেখুন stackoverflow.com/questions/10067266/...
tripleee

1

উত্স মেশিন থেকে

mysqldump --defaults-extra-file=sql.cnf database | gzip | base64 | mail me@myemail.com

গন্তব্য মেশিনে। প্রাপ্ত মেল বডিটি db.sql.gz.b64 হিসাবে সংরক্ষণ করুন ; তারপর ..

base64 -D -i db.sql.gz.b64 | gzip -d | mysql --defaults-extra-file=sql.cnf

0

শুধু আমার 2 সেন্ট যোগ করতে, আমি আমার নিজের পিএইচপি স্ক্রিপ্ট লিখব:

http://php.net/manual/en/function.mail.php

সেই পৃষ্ঠাটিতে উদাহরণগুলিতে সংযুক্তি করার অনেকগুলি উপায় রয়েছে।


2
প্রতিটি সার্ভারে পিএইচপি ইনস্টল থাকতে পারে না। আপনি যদি সত্যিই "নিজের স্ক্রিপ্টটি লিখুন" পথে যেতে চান তবে পার্ল বা পাইথনটি সাধারণত ডিফল্টরূপে উপলব্ধ বলে আরও বেশি উপযুক্ত।
exhuma

shআরও সর্বব্যাপী। ভাল উদাহরণ সহ উত্তরগুলির সাথে সদৃশ প্রশ্ন রয়েছে; আমারটা এখানে.
ট্রিপলি

0

mailx-aসংযুক্তি জন্য এখন একটি বিকল্প আছে ।


2
"-A" বিকল্পটি শিরোনামগুলির জন্য
ইয়ভেস মার্টিন

ম্যান মেইল ​​[এক্স], 10/9/10 এর সংস্করণ 12.5 (কয়েক বছর আগে) স্পষ্টভাবে বলেছে - একটি ফাইল বার্তাটিতে প্রদত্ত ফাইলটি সংযুক্ত করুন
f

4
কিছু সংস্করণ mailx। আমি বিশ্বাস করি দুটি বাস্তবায়ন আছে। একটিতে -aসংযুক্তিগুলির জন্য, অন্যদিকে এটি শিরোলেখগুলির জন্য।
exhuma

1
উবুন্টুতে মেলেক্সের সংস্করণটি জিএনইউ থেকে আসে এবং এর অর্থ একটি শিরোনাম যুক্ত করা হয়। manpages.ubuntu.com/manpages/lucid/en/man1/mailx.1.html কোন সিস্টেম এবং কোন মেলেক্স একটি সংযুক্তি করে?
নীলামকবি

3
নতুন বাস্তবায়নে "-এ" শিরোনামের জন্য এবং "-এ"
অ্যাচমেন্টের

0

ইমেল প্রেরণের কোনও পদ্ধতি নয়, তবে আপনি এটির জন্য একটি অনলাইন গিট সার্ভার (উদাহরণস্বরূপ বিটবকেট বা অনুরূপ পরিষেবা) ব্যবহার করতে পারেন।

এইভাবে, আপনি git pushআদেশগুলি ব্যবহার করতে পারেন , এবং সমস্ত সংস্করণ সংকুচিত এবং সংগঠিত উপায়ে সংরক্ষণ করা হবে।


0

CentOS এ আমি একটি বড় লগ ফাইল দিয়ে এইভাবে করছি:

MAIL="`whereis mail | awk '{print $2}'`"
WHOAMI="`whoami`"
HOSTNAME="`hostname`"
EMAIL"your@email.address"
LOGDIR="/var/log/aide"
LOGNAME="`basename "$0"`_`date "+%Y%m%d_%H%M"`"
# Arhiveerime ning kui hästi, saadame edasi:
/bin/tar -zcvf ${LOGDIR}/${LOGNAME}.tgz "${LOGDIR}/${LOGNAME}.log" > /dev/null 2>&1
if [ $? -eq 0 ]; then
    cd ${LOGDIR}
    # This works too. The message content will be taken from text file below
    # echo 'Hello!' >/root/scripts/audit_check.sh.txt
    # echo "Arhiivifail manuses" | ${MAIL} -s "${HOSTNAME} Aide report" -q /root/scripts/audit_check.sh.txt -a ${LOGNAME}.tgz -S from=${WHOAMI}@${HOSTNAME} ${EMAIL}
    echo "Arhiivifail manuses" | ${MAIL} -s "${HOSTNAME} Aide report" -a ${LOGNAME}.tgz -S from=${WHOAMI}@${HOSTNAME} ${EMAIL}
    /bin/rm "${LOGDIR}/${LOGNAME}.log"
fi

আপনি সংজ্ঞা দিচ্ছেন WHOAMIএবং HOSTNAME দুবার?
ডেভিড সি র্যাঙ্কিন

এটিতে বেশ কয়েকটি শেল কোডিং শৈলীর ভুল রয়েছে। শেলচেক নেট.ইন তাদের কয়েকটিকে নির্দেশ করবে তবে সমস্তটি নয়।
ট্রিপলি

0

ফাইলটি যদি পাঠ্য হয় তবে আপনি এটি শরীরে সবচেয়ে সহজ প্রেরণ করতে পারেন:

sendmail recipient@example.com < message.txt

1
এটি এটি সংযুক্তি হিসাবে বা ম্যাসেজের মূল অংশ হিসাবে প্রেরণ করে না। সেন্ডমেল আশা করে যে এটির ইনপুটটি সম্পূর্ণ, সুসংহত আরএফসি 5৩২২ ইমেল বার্তা হবে এবং যদি তা না হয় তবে আকর্ষণীয় উপায়ে ব্যর্থ হতে পারে।
ট্রিপলি

0

মেলএক্স কমান্ড ব্যবহার করে

 echo "Message Body Here" | mailx -s "Subject Here" -a file_name user@example.com

সেন্ডমেল ব্যবহার করে

#!/bin/ksh

fileToAttach=data.txt

`(echo "To: user@company.com"
  echo "Cc: user@company.com"
  echo "From: Application"
  echo "Subject: your subject"
  echo  your body
  uuencode $fileToAttach $fileToAttach
  )| eval /usr/sbin/sendmail -t `;

1
সেন্ডমেইল একটি দুর্দান্ত উদাহরণ, খুশী আমি এটি এখানে পেয়েছি।
হনজা পি

মনে রাখবেন যে "আপনার শরীর" এর শুরুতে আপনার খালি লাইন দরকার, অন্যথায় শরীর শিরোনামে অদৃশ্য হয়ে যাবে, বা সম্ভবত বার্তাকে সম্পূর্ণভাবে ভেঙে দেবে। মাইমের uuencodeপক্ষে এড়ানো সম্পর্কে অন্য কোথাও নোটগুলি দেখুন ।
ট্রিপলি

এবং evalপুরো বৈপরীত্যের চারপাশে রাক্ষস এবং রহস্য ব্যাকটিক্স এখানে সম্পূর্ণ অপ্রয়োজনীয়।
ট্রিপলি

0

মেলুটিলগুলি এটিকে কেকের টুকরো করে তোলে

echo "Body" | mail.mailutils -M -s "My Subject" -A attachment.pdf mail@example.org
  • -A file একটি ফাইল সংযুক্ত করে
  • -M MIME সক্ষম করে, যাতে আপনার একটি সংযুক্তি এবং প্লেটেক্সট বডি থাকতে পারে।

এখনও ইনস্টল না হলে চালান

sudo apt install mailutils

0

আপনার মেল কমান্ড বিকল্পগুলি (এটি পরীক্ষা করে দেখুন man mail) এবং সংস্করণ আপনি করতে পারেন তার উপর নির্ভর করে

echo yourBody|mail -s yoursubject -A /your/attachment/file john@doe.com


এটি নতুন কিছু যুক্ত না করে বিদ্যমান উত্তরগুলি সদৃশ বলে মনে হচ্ছে, উল্লেখযোগ্যভাবে -Aবিকল্পটি জিএনইউ mailutilsসংস্করণের সাথে সুনির্দিষ্ট mailযেমনটি আমার উত্তরটিতে উল্লেখ করা হয়েছে পাশাপাশি @ রাম্পেলের
ট্রিপল

-1

যদি মিট কাজ না করে বা ইনস্টল না করে থাকে তবে এটি ব্যবহার করে দেখুন-

*#!/bin/sh

FilePath=$1
FileName=$2
Message=$3
MailList=$4

cd $FilePath

Rec_count=$(wc -l < $FileName)
if [ $Rec_count -gt 0 ]
then
(echo "The attachment contains $Message" ; uuencode $FileName $FileName.csv ) | mailx -s "$Message" $MailList
fi*
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.