Problema ao enviar um email com a função de email do PHP. Traço completo fornecido

1

Eu tenho uma configuração de script simples:

<?php
mail('[email protected]', 'Hello World', 'Testing a message');
?>

Não consigo enviar e-mails do meu servidor para contas da AOL. Os detalhes do erro estão abaixo. O Gmail me permite enviar a mensagem ... então eu acho que a AOL é um pouco mais rigorosa.

   Starting tcpick 0.2.1 at 2009-08-03 22:25 UTC
    Timeout for connections is 600
    tcpick: reading from tcp_dump.pcap
    1      SYN-SENT       67.23.28.65:49516 > 64.12.138.153:smtp
    1      SYN-RECEIVED   67.23.28.65:49516 > 64.12.138.153:smtp
    1      ESTABLISHED    67.23.28.65:49516 > 64.12.138.153:smtp
    220-rly-mg05.mx.aol.com ESMTP mail_relay_in-mg05.6; Mon, 03 Aug 2009 18:25:34 -0400
    220-America Online (AOL) and its affiliated companies do not
    220-     authorize the use of its proprietary computers and computer
    220-     networks to accept, transmit, or distribute unsolicited bulk
    220-     e-mail sent from the internet.  Effective immediately:  AOL 
    220-     may no longer accept connections from IP addresses which 
    220      have no reverse-DNS (PTR record) assigned.
    EHLO bandop.com
    250-rly-mg05.mx.aol.com fallsroadsunoco.com
    250 HELP
    MAIL FROM:<www-data@com>
    501 SYNTAX ERROR IN PARAMETERS OR ARGUMENTS
    RSET
    250 OK
    QUIT
    1      FIN-WAIT-1     67.23.28.65:49516 > 64.12.138.153:smtp
    2      SYN-SENT       67.23.28.65:45729 > 216.239.113.101:smtp
    1      FIN-WAIT-2     67.23.28.65:49516 > 64.12.138.153:smtp
    221 SERVICE CLOSING CHANNEL
    1      RESET          67.23.28.65:49516 > 64.12.138.153:smtp
    3      SYN-SENT       67.23.28.65:45729 > 216.239.113.101:smtp
    tcpick: done reading from tcp_dump.pcap

    20 packets captured
    3 tcp sessions detected

Você sabe como posso fazer o parâmetro FROM sair corretamente? Definir o cabeçalho FROM na função de correio PHP não funciona.

UPDATE

Esse pequeno hack está funcionando, mas eu preferiria corrigir esse problema fora do PHP.

mail('[email protected]', 'Hello World', 'Testing a message', null,'[email protected]');

Eu sou super noob com servidores de e-mail

    
por Tony 04.08.2009 / 00:32

3 respostas

1

Com a AOL, eles geralmente não serão processados, a menos que você preencha o formulário para obter a lista branca . Para alterar de onde o correio está vindo, edite o parâmetro sendmail_path no arquivo php.ini. Isso é mencionado no php mail () doc em additional_parameters.

Por exemplo:

sendmail_path = "/usr/sbin/sendmail -t -f [email protected]"

Você também pode passar um parâmetro para a função mail ():

<?php
mail('[email protected]', 'the subject', 'the message', null,
   '[email protected]');
?>

Por fim, você pode achar o pacote de email alternativo mais flexível, como o pacote PEAR MAIL ou msmtp , você pode especificar outros servidores smtp.

    
por 04.08.2009 / 00:38
1

Você deseja alterar o envelope De: endereço, que é diferente do cabeçalho De :. Veja este comentário no documento da função mail ().

O endereço do envelope depende da configuração do seu MTA - no seu caso, 'www-data' é o usuário que o seu script executa e 'com' é (parte?) do nome do host da sua máquina. Supondo que você está no * nix, você pode tentar substituir o endereço do envelope assim:

mail('[email protected]', 'Hello World', 'Testing a message', null,'[email protected]');

onde [email protected] é o endereço do remetente do envelope que você deseja exibir.

Se isso funcionar, e você tiver acesso ao seu arquivo php.ini, você pode definir o endereço do remetente do envelope - veja a postagem de Kyle.

Você também pode querer dar uma olhada em sua configuração MTAs (sendmail, postfix) - parece que tem um problema com sua configuração de nome de host. Alterar as configurações do php-s irá corrigir isso para o php, mas se alguma outra coisa (cron, logwatch) no seu sistema quiser enviar mensagens, seria útil ter um MTA funcional.

Editar após o seu comentário: É difícil sugerir algo sem saber a configuração do seu servidor de e-mail, mas, para começar, tente o seguinte:

myhostname = mail.virtualhostname.com
mydomain = virtualhostname.com
myorigin = $mydomain
masquerade_domains = virtualhostname.com
    
por 04.08.2009 / 00:49
0

Tente escapar do sinal de arroba.

mail('corgan1003\@aol.com', 'Hello World', 'Testing a message');
    
por 04.08.2009 / 00:41

Tags