Eu tenho um comando cron que executa um arquivo e estou tentando configurar a saída para que ele envie um email para mim. Eu uso isso com scripts de terceiros que não quero modificar os arquivos diretos, portanto, preciso canalizar a saída em vez de modificar o PHP.
Estou migrando de um servidor que usa mail
para um servidor que usa sendmail
. Estou lutando para descobrir como enviar corretamente um assunto para o sendmail por meio de uma linha de comando.
/usr/local/bin/php -f /path/to/file.php 2>&1 | /usr/sbin/sendmail -s "My Test Email Subject" [email protected]
sendmail
é o binário usado pelo seu sistema para rotear o correio enviado a ele pormail
. Faz parte de um conjunto de programas como sendmail , postfix , exim e assim por diante. Portanto, você precisa instalar o pacote apropriado para o correio . Diga-nos a distribuição linux que você está usando.Respostas:
Isto é errado.
Você deve ter um
mail
comando em algum lugar. Poderia ser chamadomailx
. Deve estar no/bin/
diretório Como prática padrão, os scripts php nunca devem chamar nada em/sbin
ou/usr/sbin
. Os programas sbin são tipicamente para raiz.Além disso, o php possui uma função de correio embutida .
fonte
mail
oumailx
pode serMail
. Mas, mesmo que eles não existam, você pode instalar o mutt e executar omutt -x
que emulamailx
.which mail
e ele retornou/bin/mail
.Nos meus sistemas Debian (que possuem o Exim em vez do sendmail "real", mas ainda têm um binário sendmail para compatibilidade), quando quero enviar email de um script, faço algo equivalente a:
Observe que a linha em branco é importante.
fonte
sendmail -t <<EOF
?sendmail
falharem e gravarem no STDERR, como eu poderia capturar isso como uma variável para usar posteriormente no script?echo = O corpo do email.
sed stuff = Aplica os cabeçalhos de email e as linhas duplas importantes entre corpo e cabeçalhos.
sendmail -t = Canaliza diretamente através do sendmail.
fonte
fonte