رمز KornShell (ksh) لإرسال المرفقات مع mailx و uuencode؟

أحتاج إلى إرفاق ملف مع mailx ولكن في الوقت الحالي لا أجد النجاح.

إليك الكود:

subject="Something happened"
to="[email protected]"
body="Attachment Test"
attachment=/path/to/somefile.csv

uuencode $attachment | mailx -s "$subject" "$to" << EOF

The message is ready to be sent with the following file or link attachments:

somefile.csv

Note: To protect against computer viruses, e-mail programs may prevent
sending or receiving certain types of file attachments.  Check your
e-mail security settings to determine how attachments are handled.

EOF

أي ردود فعل سيكون محل تقدير كبير.


Update I have added the attachment var to avoid having to use the path every time.

0
وأضاف تحرير
الآراء: 1

2 إجابة

يجب عليك تنسيق كل من نص الرسالة والمرفق uuencoded:

$ subject="Something happened"
$ to="[email protected]"
$ body="Attachment Test"
$ attachment=/path/to/somefile.csv
$
$ cat >msg.txt < The message is ready to be sent with the following file or link attachments:
>
> somefile.csv
>
> Note: To protect against computer viruses, e-mail programs may prevent
> sending or receiving certain types of file attachments.  Check your
> e-mail security settings to determine how attachments are handled.
>
> EOF
$ ( cat msg.txt ; uuencode $attachment somefile.csv) | mailx -s "$subject" "$to"

هناك طرق مختلفة لتوفير نص الرسالة ، وهذا مجرد مثال قريب من سؤالك الأصلي. إذا كان يجب إعادة استخدام الرسالة ، فمن المنطقي تخزينها في ملف واستخدام هذا الملف.

0
وأضاف
شكرا على الرد! لذلك يتم إنشاء msg.txt بواسطة EOF ثم إعادة استخدامها في السطر الأخير؟
وأضاف المؤلف Nano Taboada, مصدر
يتم عرض الخطأ التالي: cat: لا يمكن فتح msg.txt
وأضاف المؤلف Nano Taboada, مصدر
خطأي! لقد قمت بمسافة القطة> msg.txt << EOF
وأضاف المؤلف Nano Taboada, مصدر

حسنًا ، إليك بعض المشكلات القليلة الأولى التي تواجهها.

  1. يبدو أنك تفترض أن عميل البريد سيتعامل مع المرفقات uuencoded بدون أي رؤوس. لن يحدث ذلك.

  2. أنت تسيء استخدام إعادة توجيه الإدخال/الإخراج: يتم إخراج كل من إخراج uuencode والمستند التالي إلى mailx ، وهو ما لا يمكن حدوثه.

  3. أنت تسيء استخدام uuencode: إذا تم إعطاء مسار واحد ، فسيكون مجرد اسم لإعطاء الملف الذي تم فك ترميزه ، وليس اسم ملف إدخال. يعطي تعيين الملف مرتين نفس الاسم إلى الملف الذي تم فك ترميزه كما تم قراءته. ترميز -m قوات العلم base64. لكن هذا لن يوفر رؤوس مرفقات للبريد الإلكتروني.

كنت على نحو أفضل الحصول على نسخة من mpack ، والتي ستفعل ما تريد.

إذا كان يجب عليك القيام بذلك ، يمكنك فعل شيء كالتالي:

cat <

هناك الكثير من الاحتمالات الأخرى ... ولكن لا يزال هذا المستند موجودًا كما في المثال الخاص بك وكان من السهل على رأس رأسي ، وليس هناك ملف مؤقت المشاركة.

0
وأضاف
شكرا جزيلا! نعم ، لقد رأيت أن هناك غموضًا في ذلك ، حيث يمكن القيام ببعض الملحقات البسيطة ، ولكن بما أنني لست جذورًا في هذا المربع ، يجب أن أتعامل مع أي اختراق للبريد.
وأضاف المؤلف Nano Taboada, مصدر
أواجه الخطأ التالي: uuencode: خيار غير قانوني - m الاستخدام: uuencode [infile] remotefile
وأضاف المؤلف Nano Taboada, مصدر
لديك وأقدم إصدار من uuencode ، قبل أن يوفر ترميز base64 ... لا يزال بإمكانك الحصول على mpack وتجميعه فقط لاستخدامه محليًا تحت حسابك ... وهذا ما سأفعله على الأرجح.
وأضاف المؤلف Thomas Kammeyer, مصدر