문제

명령줄에서 빠르게 이메일을 보내고 싶습니다.나는 이것을 수행하는 데 여러 가지 다른 방법이 있을 수 있다는 것을 알고 있습니다.

나는 Linux 터미널에서 이 작업을 수행하는 간단한 방법(bash 쉘일 가능성이 높지만 무엇이든 수행해야 함)과 Windows에서 이 작업을 수행하는 대체 방법을 찾고 있습니다.나는 명령줄에서 바로 이메일을 작성할 수 있거나 명령줄 프로그램에 메시지를 전달할 수 있는 유연성을 원합니다.이 일을 어떻게 하시겠습니까?작은 스크립트가 있다면 괜찮을 것입니다.

도움이 되었습니까?

해결책

메일을 사용할 수 있습니다:

$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

^D - 누르기를 의미합니다. Ctrl 키+

이것을 사용할 수도 있습니다 메일을 보내다 윈도우용 버전.표준 UNIX와 유사한 동작을 사용하는 것은 매우 간단합니다.빠른.설치가 필요하지 않습니다. 시스템 어디에 있든 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

Windows 명령줄에서 이 작업을 수행하려는 경우 다음이라는 도구가 있습니다. 멍청한 CMD 프롬프트에서 사용할 수 있습니다.

PowerShell에서는 좀 더 재미있습니다.PowerShell은 .NET Framework에 액세스할 수 있으므로 System.Net.Mail의 클래스를 사용하여 이메일을 보낼 수 있습니다.예제 스크립트가 있습니다. PowerShell 커뮤니티 스크립트 리포지토리.

IIRC를 사용하려면 메일 전송 에이전트(MTA)도 구성해야 합니다. mail 또는 대부분의 이메일 라이브러리. 메일을 보내다 가장 잘 알려져 있지만 구성에 있어서는 진짜 돼지입니다. 엑심, 큐메일 그리고 접미사 모두 좀 더 현대적인 대중적인 대안입니다.

메일을 보낼 수만 있고 받을 수는 없는 더 가벼운 MTA도 있습니다.nullmailer, mstmp, ssmtp 등

우분투에서는 Postfix가 기본값입니다. 이 위키 기사 구성 방법을 설명합니다. 로컬 주소에서만 전달을 허용하도록 하세요!

다음은 이메일을 보내는 스크립트의 Power Shell 예입니다.

$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)

Linux 서버에 있지만 메일을 사용할 수 없는 경우(공유 서버의 경우일 수 있음) 간단한 PHP / Perl / Ruby(사용 가능한 항목에 따라 다름) 스크립트를 작성하여 동일한 작업을 수행할 수 있습니다.이 같은:

#! /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