Como enviar o sendmail pela linha de comando

9

Eu tenho um comando cron que executa um arquivo e estou tentando configurar a saída para que ele envie um e-mail para mim. Eu uso isso com scripts de terceiros que eu não quero modificar os arquivos diretos, então eu 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 . Eu estou lutando para descobrir como enviar um assunto para o sendmail corretamente através 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]
    
por Webnet 18.03.2012 / 22:20

4 respostas

3

/usr/sbin/sendmail

Está errado.

Você deve ter um comando mail em algum lugar. Pode ser chamado de mailx . Deve estar no diretório /bin/ . Como prática padrão, os scripts php nunca devem chamar nada em /sbin ou /usr/sbin . Os programas sbin são tipicamente para root.

Além disso, o php foi construído na função de e-mail .

    
por 18.03.2012 / 22:32
12

Em meus sistemas Debian (que possuem o Exim em vez do sendmail "real", mas ainda tenho um binário sendmail para compatibilidade), quando eu quero enviar mensagens de um script, eu faço algo equivalente a:

cat <<EOF | sendmail -t
To: [email protected]
Subject: Testing
From: [email protected]

This is a test message
EOF

Note que a linha em branco é importante.

    
por 18.03.2012 / 22:55
-1
php -f file.php 2>&1 | sed 's/^/To: [email protected]\nSubject: My Test Email Subject\n\n/' | sendmail -t
    
por 20.08.2013 / 23:59
-1
echo -e "This is my body\nSecond line" 2>&1 | sed '1!b;s/^/To: [email protected]\nSubject: My Test Email Subject\n\n/' | sendmail -t

echo = O corpo do email.
sed stuff = Aplica os cabeçalhos de e-mail e uma linha dupla importante entre corpo e cabeçalhos.
sendmail -t = Faz o pipe diretamente através do sendmail.

    
por 27.02.2014 / 12:33