shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] comando para enviar e-mail com nome e e-mail do remet


From: Felipe Kellermann
Subject: Re: [shell-script] comando para enviar e-mail com nome e e-mail do remetente fornecidos
Date: Thu, 15 Jan 2004 11:29:10 -0200 (BRST)

On Thu, 15 Jan 2004 9:13am  -0200, Erley Barbosa da Silva wrote:

> com o endereco de e-mail do responsavel pelo aviso. Este responsavel possui
> conta de e-mail em outro computador.

        Se lembro bem, o mail(x) não permite fazer isto.


> #!/bin/bash
> #
> # envia e-mail avisando para os enderecos relacionados em MailList
> for MAILADDRESS in `cat MailList`; do
>      mail -s "Comunicado Geral" $MAILADDRESS << FimMail
> Ref.: Alteracao de senha de acesso a pagina restrita da empresa
> Informamos que a senha de acesso a pagina de suporte foi alterada para

        Já que usas a bash, tenho o pequeno 'msh' que pode te ajudar.
        Se quiser enviar com anexo, só avisar, também já tem pronto! :-)

$ cat msh
#!/bin/sh -e

[[ "$#" > "1" ]] || { echo "$0: serv/porta para [de]"; exit; }

envia()
{
        while [[ $1 ]]; do
                echo -e $1 >&3 && read n <&3 &&  echo $n
                shift
        done
}

        exec 3<>/dev/$1 && read n <&3; echo $n >&2
        envia "mail from: ${3-$USER}" "rcpt to: $2" "data\n"
        while read l; do m="$m$l\n"; done && envia "$m."
$

        Fica mais ou menos assim:

$ msh tcp/localhost/25 root < n
220 cordel ESMTP Postfix
250 Ok
250 Ok
354 End data with <CR><LF>.<CR><LF>
250 Ok: queued as A427CE77
$


> Este e-mail foi gerado automaticamente.
> FimMail
> done

        Percebeu como pode ser feito? Os parâmetros são: o local em que
está o servidor que vamos usar (tcp/localhost/25), para quem nós vamos
enviar e opcionalmente "quem" está enviando (para o servidor), que por
default vai ficar o nome do usuário atual. Os campos "From" e "To" que
aparece nos e-mails não tem a ver com estes parâmetros que são passados
inicialmente ao servidor, eles são da mensagem. Pegando teu exemplo:

while read MAILADDRESS MAILNAME; do
        msh tcp/localhost/25 $MAILADDRESS <<- FimMail
        Subject: Comunicado Geral
        From: mail@do.outro.servidor
        To: $MAILNAME <$MAILADDRESS>

        Ref.: Alteracao de senha de acesso a pagina restrita da empresa
        Informamos que a senha de acesso a pagina de suporte foi alterada para
        ...
        Este e-mail foi gerado automaticamente.
FimMail
done < MailList

        Muito mais prático e bonito, não acha?

-- 
Felipe Kellermann


reply via email to

[Prev in Thread] Current Thread [Next in Thread]