Domanda

Vorrei inviare rapidamente e-mail dalla riga di comando.Mi rendo conto che probabilmente ci sono diversi modi per farlo.

Sto cercando un modo semplice per farlo da un terminale Linux (probabilmente una shell bash ma dovrebbe andare bene qualsiasi cosa) e un modo alternativo per farlo su Windows.Voglio essere in grado di inviare un'e-mail direttamente dalla riga di comando o avere la flessibilità di reindirizzare il messaggio al programma da riga di comando.Come faresti per farlo?Se hai piccoli script, andrebbe bene lo stesso.

È stato utile?

Soluzione

Puoi usare la posta:

$mail -s <subject> <recipients>

Quindi digiti il ​​messaggio e lo termini con una riga che contiene solo un punto.Questo segnala che hai finito e invia il messaggio.

Puoi anche inserire la tua email da STDIN e verrà inviata come testo di un'email:

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

Una piccola nota con questo approccio: a meno che il tuo computer non sia connesso a Internet e le impostazioni DNS non siano impostate correttamente, non sarai in grado di ricevere risposte al tuo messaggio.Per un programma da riga di comando più robusto puoi collegarti al tuo account di posta elettronica POP o IMAP, dai un'occhiata a entrambi pino O bastardino.

Altri suggerimenti

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

In alternativa:

$ 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 - significa premere Ctrl+D

Puoi anche usare questo inviare una mail versione per Windows.È molto semplice da usare, ha un comportamento standard simile a UNIX.Veloce.Non necessita di alcuna installazione, basta richiamare l'EXE ovunque si trovi sul tuo sistema.

Composizione dell'e-mail:

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

Invio del file:

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

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

Se stai cercando di farlo da una riga di comando di Windows, c'è uno strumento chiamato blat che può essere utilizzato da un prompt CMD.

È un po' più divertente da PowerShell.Poiché PowerShell ha accesso a .NET Framework, è possibile utilizzare le classi di System.Net.Mail per inviare posta elettronica.C'è uno script di esempio sul file Repository di script della community di PowerShell.

IIRC dovrai anche configurare un agente di trasferimento posta (MTA) da utilizzare mail o la maggior parte delle librerie di posta elettronica. Inviare una mail è il più conosciuto ma è un vero porco in termini di configurazione. Esim, Qmail E Postfisso sono tutte alternative popolari un po' più moderne.

Esistono anche MTA più leggeri che sono in grado solo di inviare posta, non di riceverla:nullmailer, mstmp, ssmtp, ecc.

Postfix è predefinito per Ubuntu. Questo articolo della Wiki descrive come configurarlo: assicurati di consentire l'inoltro solo dal tuo indirizzo locale!

Ecco un esempio di Power Shell di uno script per inviare e-mail:

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

Se desideri richiamare un programma di posta elettronica, consulta questo articolo:

Come posso aprire il programma di posta predefinito con oggetto e corpo in modo multipiattaforma?

Se utilizzi un server Linux, ma la posta non è disponibile (il che può accadere su server condivisi), puoi scrivere un semplice script PHP / Perl / Ruby (a seconda di ciò che è disponibile) per fare la stessa cosa, ad es.qualcosa come questo:

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

Quindi invocare come segue:

mail me@example.com test < message
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top