Como posso enviar um e-mail por meio do comando mailx do UNIX?

91

Como posso enviar um e-mail por meio do mailxcomando UNIX ?

user269484
fonte

Respostas:

108

um exemplo

$ echo "something" | mailx -s "subject" [email protected]

enviar anexo

$ uuencode file file | mailx -s "subject" [email protected]

e enviar anexo E escrever o corpo da mensagem

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" [email protected]
ghostdog74
fonte
4
Eu tentei, mas não deu resposta. Nem está dando alguma mensagem de erro nem enviando o e-mail para [email protected]. É necessária alguma configuração de servidor?
user269484
2
não há necessidade de nenhuma configuração. Verifique sua conexão com a internet. Tenho uma conexão direta com a internet via cabo, não uso proxies nem nada então funciona do meu lado.
ghostdog74
2
Você também deve verificar se há mensagens de erro em sua caixa de entrada. Ou seja, corra mail.
hafichuk
2
Observe, no entanto, que uuencodeé uma tecnologia legada de um milênio passado que não produz o que hoje chamamos de "anexos". Basicamente, ele coloca uma confusão legível por máquina no final do texto da mensagem. Nos dias de hoje, você seria melhor atendido por um remetente de correio devidamente ciente do MIME. Infelizmente, não existe um mailxsubstituto universalmente compatível com os recursos MIME, mas se você tiver mutt, esse é provavelmente o caminho de menor resistência.
tripleee
5
@ user269484 O Gmail não aceita e-mail de endereços IP não autorizados. Leia support.google.com/mail/answer/10336
Manas Jayanth
33

Olha Você aqui :

echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"

PS. Corpo e assunto devem ser mantidos entre aspas duplas. Remova citações de FROM_EMAILe To_EMAILao substituir endereços de e-mail.

Kamran Ahmad
fonte
1
No Mac, você receberá um erro do comando mailx se usar -r mailx: opção ilegal - r Uso: mailx [-EiInv] [-s subject] [-c cc-addr] [-b bcc-addr] [ -F] para-adicionar ... mailx [-EHiInNv] [-F] -f [nome] mailx [-EHiInNv] [-F] [-u usuário] mailx -e [-f nome] mailx -H
jcpennypincher
você poderia fazer -S [email protected]
Kalpesh Soni
6
mailx -s "subjec_of_mail" [email protected] < file_name

através do mailxutilitário, podemos enviar um arquivo de unixpara mail server. aqui no código acima podemos ver que o primeiro parâmetroéo -s "subject of mail" segundo parâmetroée mail IDo último parâmetroéo nome do arquivo que queremos anexar

Girdhar Singh Rathore
fonte
1
Isso não anexa o arquivo, mas coloca o conteúdo do arquivo no corpo
Guus
5
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress

-c e -b são opcionais.

-s: Especifique o assunto; se o assunto contiver espaços, use aspas.

-c: Envia cópias carbono para a lista de usuários separados por vírgula.

-b: Envia cópias ocultas de carbono para a lista de usuários separados por vírgula.

Espero que minha resposta esclareça sua dúvida.

Pavan Kumar
fonte
5

É mais rápido com o comando MUTT

echo "Body Of the Email"  | mutt -a "File_Attachment.csv" -s "Daily Report for $(date)"  -c [email protected] [email protected] -y
  1. -c lista de cc de e-mail
  2. -s lista de assuntos
  3. -y para enviar o e-mail
user1651561
fonte
4

Na página de manual:

Enviando email

Para enviar uma mensagem para uma ou mais pessoas, mailx pode ser invocado com argumentos que são os nomes das pessoas para quem o e-mail será enviado. Espera-se que o usuário digite sua mensagem, seguida por um 'control-D' no início de uma linha.

Em outras palavras, o mailx lê o conteúdo a ser enviado da entrada padrão e pode ser redirecionado para o normal. Por exemplo:

ls -l $HOME | mailx -s "The content of my home directory" [email protected]
Hlovdal
fonte
3
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW  " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`


mail -s "$header" [email protected],   \
              [email protected], \ < open_files.log
Piyush Mattoo
fonte
1

Personalizando o endereço DE

MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="[email protected]"
FROM="DONOTREPLY"

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM
Hari
fonte
Um exceto de man mail: -f [arquivo] Lê o conteúdo da mbox do usuário (ou o arquivo especificado) para processamento; quando o mailx é encerrado, ele grava as mensagens não apagadas de volta neste arquivo. O arquivo de string é tratado conforme descrito para o comando de pasta abaixo.
ZJ Lyu
Depende de qual versão você está usando. Existem vários comandos maile concorrentes incompatíveis mailxcom opções diferentes.
tripleee
1

Esta é uma função multifuncional para lidar com o envio de e-mail com vários anexos:

enviaremail() {
values=$(echo "$@" | tr -d '\n')
listargs=()
listargs+=($values)
heirloom-mailx $( attachment=""
for (( a = 5; a < ${#listargs[@]}; a++ )); do
attachment=$(echo "-a ${listargs[a]} ")
echo "${attachment}"
done) -v -s "${titulo}" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://$1 \
-S from="${2}" \
-S smtp-auth-user=$3 \
-S smtp-auth-password=$4 \
-S ssl-verify=ignore \
$5 < ${cuerpo}
}

chamada de função: enviaremail "smtp.mailserver: port" "from_address" "authuser" "'pass'" "destination" "lista de anexos separados por espaço"

Nota: Remova as aspas duplas na chamada

Além disso, lembre-se de definir externamente o $ titulo (assunto) e $ cuerpo (corpo) do e-mail antes de usar a função

Ivo Yordanov
fonte
0

Se você deseja enviar mais de duas pessoas ou DL:

echo "Message Body" | mailx -s "Message Title" -r [email protected] [email protected],[email protected]

aqui:

  • -s = assunto ou título do correio
  • -r = e-mail do remetente ou DL
dildeepak
fonte
Você pode explicar por que echo é usado para passar o corpo de uma mensagem? Se eu omitir isso e executar do MailX, o cursor piscará como se estivesse esperando uma entrada.
LonelyRogue,