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


Respostas:


108

um exemplo

$ echo "something" | mailx -s "subject" recipient@somewhere.com

enviar anexo

$ uuencode file file | mailx -s "subject" recipient@somewhere.com

e enviar anexo E escrever o corpo da mensagem

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" recipient@somewhere.com

4
Eu tentei, mas não deu resposta. Nem está dando alguma mensagem de erro nem enviando o e-mail para meunome@gmail.com. É 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.


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 de=a@b.com
Kalpesh Soni

6
mailx -s "subjec_of_mail" abc@domail.com < 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


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.


5

É mais rápido com o comando MUTT

echo "Body Of the Email"  | mutt -a "File_Attachment.csv" -s "Daily Report for $(date)"  -c cc_mail@g.com to_mail@g.com -y
  1. -c lista de cc de e-mail
  2. -s lista de assuntos
  3. -y para enviar o e-mail

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" someone@email.adr

3
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW  " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`


mail -s "$header" abc.xyz@google.com,   \
              cde.mno@yahoo.com, \ < open_files.log

1

Personalizando o endereço DE

MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM

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


0

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

echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com

aqui:

  • -s = assunto ou título do correio
  • -r = e-mail do remetente ou DL

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,
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.