كيف يمكنني إرسال البريد الإلكتروني من سطر الأوامر ؟

StackOverflow https://stackoverflow.com/questions/36498

  •  09-06-2019
  •  | 
  •  

سؤال

أود بسرعة إرسال البريد الإلكتروني من سطر الأوامر.أدرك ربما يكون هناك عدد من الطرق المختلفة للقيام بذلك.

أنا أبحث عن طريقة بسيطة للقيام بذلك من محطة طرفية لينكس (على الأرجح باش قذيفة ولكن أي شيء ينبغي القيام به) و طريقة بديلة للقيام بذلك على ويندوز.كنت تريد أن تكون قادرة على اثارة البريد الإلكتروني على سطر الأوامر أو المرونة في الأنابيب الرسالة في سطر الأوامر البرنامج.كيف يمكنك أن تذهب عن القيام بذلك ؟ إذا كان لديك صغيرة النصوص التي سيكون على ما يرام أيضا.

هل كانت مفيدة؟

المحلول

يمكنك استخدام البريد الإلكتروني:

$mail -s <subject> <recipients>

ثم اكتب رسالتك و ينتهي مع خط هذا الفترة.هذه إشارات كنت فعلت ثم إرسال الرسالة.

يمكنك أيضا الأنابيب البريد الإلكتروني الخاص بك من STDIN و سيتم إرسالها كما نص البريد الإلكتروني:

$<mail-generating-program> | mail -s <subject> <recipients>

واحدة صغيرة علما مع هذا النهج - إلا إذا كان الكمبيوتر متصلا إلى شبكة الإنترنت إعدادات DNS الخاصة بك يتم تعيين بشكل صحيح, أنت لن تكون قادرة على الحصول على الردود على رسالتك.أقوى سطر الأوامر البرنامج يمكنك الارتباط إلى POP أو IMAP حساب البريد الإلكتروني ، راجع إما الصنوبر أو المغفل.

نصائح أخرى

$ echo "This is the email body" | mail -s "This is the subject" me@email.com

بدلا من ذلك:

$ cat | mail -s "A few lines off the top of my head" me@here.com
This is where my
multiline
message would go
^D

^د - يعني اضغط ctrl+d

يمكنك أيضا استخدام هذا sendmail نسخة ويندوز.أنها بسيطة جدا للاستخدام, القياسي يونكس مثل السلوك.سريع.لا تحتاج إلى أي تثبيت, فقط اتصل EXE أينما يقع على النظام الخاص بك.

يؤلف البريد الإلكتروني:

echo To: you@example.com, me@example.com >> the.mail
echo From: them@example.com >> the.mail
echo Subject: This is a SENDMAIL notification >> the.mail
echo Hello World! >> the.mail
echo This is simple enough. >> the.mail
echo .>> the.mail

إرسال الملف:

\usr\lib\sendmail.exe -t < the.mail

type the.mail | C:\Projects\Tools\sendmail.exe -t

إذا كنت تبحث للقيام بذلك من ويندوز سطر الأوامر, هناك أداة تسمى بلاط التي يمكن استخدامها من CMD موجه.

أنها قليلا أكثر متعة من PowerShell.منذ PowerShell لديه حق الوصول إلى .NET Framework يمكنك استخدام فئات من النظام.صافي.البريد لإرسال البريد الإلكتروني.هناك مثال البرنامج النصي على PowerShell المجتمع النصي مستودع.

IIRC سيكون لديك أيضا إلى تكوين البريد نقل عامل (MTA) إلى استخدام mail أو البريد الإلكتروني الأكثر المكتبات. Sendmail هي أكثر من المعروف جيدا ولكن هو خنزير حقيقي عندما يتعلق الأمر التكوين. الاستيراد والتصدير, يهم و Postfix هي شعبية في جميع البدائل التي يتم قليلا أكثر حداثة.

هناك أيضا أكثر خفيفة الوزن MTAs التي هي فقط قادرة على إرسال البريد وليس الحصول عليها:nullmailer, mstmp, ssmtp ، إلخ.

Postfix هو الافتراضي على أوبونتو. هذا ويكي المادة توضح هذه المقالة كيفية تكوين ذلك - تأكد من السماح فقط الشحن من عنوانك المحلي!

هنا هو شل السلطة مثال على سكربت لإرسال البريد الإلكتروني:

$smtp = new-object Net.Mail.SmtpClient("mail.example.com")

if( $Env:SmtpUseCredentials -eq "true" ) {
    $credentials = new-object Net.NetworkCredential("username","password")
    $smtp.Credentials = $credentials
}
$objMailMessage = New-Object System.Net.Mail.MailMessage
$objMailMessage.From = "script@mycompany.com"
$objMailMessage.To.Add("you@yourcompany.com")
$objMailMessage.Subject = "eMail subject Notification"
$objMailMessage.Body = "Hello world!"

$smtp.send($objMailMessage)

إذا كنت تريد أن تحتج برنامج البريد الإلكتروني ، ثم راجع هذه المقالة:

كيف يمكنني فتح البريد الافتراضي البرنامج مع الموضوع في الجسم عبر منصة الطريقة ؟

إذا كنت على خادم لينكس لكن البريد لا المتاحة (والتي يمكن أن تكون القضية على الخوادم المشتركة) ، يمكنك كتابة بسيطة PHP / Perl / روبي (اعتمادا على ما هو متوفر) السيناريو أن تفعل الشيء نفسه, على سبيل المثالشيء من هذا القبيل:

#! /usr/bin/php
<?php

if ($argc < 3) {
    echo "Usage: " . basename($argv[0]) . " TO SUBJECT [CC]\n";
    exit(1);
}

$message = file_get_contents('php://stdin', 'r');
$headers = $argc >= 4 ? "Cc: $argv[3]\r\n" : null;

$ret = mail($argv[1], $argv[2], $message, $headers);

exit($ret ? 0 : 1);

ثم تحتج على النحو التالي:

mail me@example.com test < message
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top