Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Luiz Lacerda

Problema com servidor de email

Recommended Posts

Olá pessoal, estou começando no PHP, estou estudando a linguagem em localhost, ao tentar enviar dados de formulário com a função mail ocorre o seguinte erro: "Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and"smtp_port" setting in php.ini or use ini_set() in C:\(...)".

Já li algo sobre configurar o php.ini e instalar um servidor de e-mail local. Podem me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Michel Cruz, o código com você pediu vai aí:

 

<html>
<head>
<title>Página PHP</title>
</head>
<body>
<?php
$destinatario = "cristiano@urcamp.tche.br";
$assunto = "Como enviar e-mais via PHP";
$mensagem = "
<h2>Envio de e-mails via PHP</h2>
<p>Depois que o servidor está configurado, é muito simples enviar e-mails
com o PHP, usando apenas a função mail(). Você deve indicar como
parâmetros o destinatário, o assunto, e a mensagem. Para enviar
cabeçalhos adicionais, como informações sobre o formato da mensagem, há
um quarto parâmetro.</p>";
$cabecalho = "MIME-Version: 1.0\r\nContent-type: text/html; charset=iso-8859-1\r\n";
mail($destinatario, $assunto, $mensagem, $cabecalho);
echo "e-mail enviado com sucesso";
?>
</body>
</html>
É simples, apenas para teste mesmo,ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara assim para testar e-mail local você tem que configurar um servidor de e-mail mesmo.

No caso se você ultilizar windows tem uma boa solução que é o fake sendmail...

 

 

http://raelcunha.com/sendmail.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Cara assim para testar e-mail local você tem que configurar um servidor de e-mail mesmo.

No caso se você ultilizar windows tem uma boa solução que é o fake sendmail...

 

http://raelcunha.com/sendmail.php

 

Olá Ricardo, o sendmail já está instalado e já configurei o PHP.ini, ficou assim:

 

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
sendmail_from = andre.si@outlook.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path ="C:\sendmail\sendmail.exe -t"
Minha dúvida agora é quanto à configuração do SENDMAIL.ini, como posso obter as informações conforme a seguir?

  • smtp_server: o endereço do servidor SMTP;
  • smtp_port: a porta do servidor SMTP;
  • default_domain: o domínio do seu email;(@outlook.com)?
  • pop3_server: o endereço do servidor POP3;
  • pop3_username: (seu email;)ok.
  • pop3_password: (sua senha.)ok.

O email para onde serão enviadas as mesagens é Outlook. Se o PHP.ini estiver faltando alguma coisa pode falar, ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites

;sendmail_path ="C:\sendmail\sendmail.exe -t"

 

Primeiro sua configuração no php.ini esta errada, retire o ; do começo da linha acima...

 

smtp_server= //Endereço do servidor de envio
smtp_ssl=//metodo de autenticação
smtp_port=//Porta do servidor de envio
auth_username=//Endereço de e-mail
auth_password=//Senha do endereço de e-mail

Acima esta a lista do que deve ser configurado no arquivo sendmail.ini

 

Obs: Para que as configurações funcione é necessario restart o apache...

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

smtp_server= //Endereço do servidor de enviosmtp_ssl=//metodo de autenticaçãosmtp_port=//Porta do servidor de envio

Acima esta a lista do que deve ser configurado no arquivo sendmail.ini

 

Obs: Para que as configurações funcione é necessario restart o apache...

 

Olá Ricardo minha dúvida é exatamente esta, não sei o que se pede em smtp_server, smtp_ssl e smtp_port.

Poderia postar para mim? Estou tentando com Outlook.com. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá hinom obg pelo apoio.

Pessoal, pelo que estou entendendo, após configurar o php.ini e o sendmail.ini vou conseguir enviar e-mails de um formulário php com a função mail() a partir do localhost.

O meu sendmail.ini está assim:

 

; configuration for fake sendmail
; if this file doesn't exist, sendmail.exe will look for the settings in
; the registry, under HKLM\Software\Sendmail
[sendmail]
; you must change mail.mydomain.com to your smtp server,
; or to IIS's "pickup" directory. (generally C:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.
smtp_server=smtp.live.com
; smtp port (normally 25)
smtp_port=587
; SMTPS (SSL) support
; auto = use SSL for port 465, otherwise try to use TLS
; ssl = alway use SSL
; tls = always use TLS
; none = never try to use SSL
smtp_ssl=auto
; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn't provided
; if you want to override the value in the registry, uncomment and modify
default_domain=outlook.com
; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging
error_logfile=error.log
; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging
;debug_logfile=debug.log
; if your smtp server requires authentication, modify the following two lines
auth_username=andre.si@outlook.com
auth_password=*******
; if your smtp server uses pop3 before smtp authentication, modify the
; following three lines. do not enable unless it is required.
pop3_server=pop3.live.com
pop3_username=andre.si@outlook.com
pop3_password=*******
; force the sender to always be the following email address
; this will only affect the "MAIL FROM" command, it won't modify
; the "From: " header of the message content
force_sender=
; force the sender to always be the following email address
; this will only affect the "RCTP TO" command, it won't modify
; the "To: " header of the message content
force_recipient=
; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting. you can manually set the ehlo/helo name if required
hostname=

Por favor ajudem!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo no caso se eu não me engano servidor de e-mail da outlook usa TLS.

smtp_ssl=TLS

 

E no caso você descomento a linha abaixo do php.ini tirando o ;

 

sendmail_path ="C:\sendmail\sendmail.exe -t"

 

E lembre-se de restarta os serviço apache e php...

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. analise os arquivos error.log e debug.log

 

2. A rede local permite usar a porta 587 ?

Apesar de ser uma porta padrão para o SMTP, verifique.

 

3. O Firewall está permitindo o sendmail.exe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá hinom e Ricardo,

1) O debug.log não encontrei.O error.log tras as seguintes informações:
13/06/23 00:06:01 : Message is missing sender's address
13/06/23 00:10:23 : Message is missing sender's address
13/06/23 00:13:59 : Message is missing sender's address
13/06/23 00:18:43 : Message is missing sender's address
13/06/23 00:18:47 : Message is missing sender's address
13/06/23 00:19:11 : Message is missing sender's address
13/06/23 00:22:17 : Message is missing sender's address
2) Quanto à porta 587 criei uma nova regra no firewall para usá-la.
3) Adicionei sendmail.exe à lista de programas permtidos pelo firewall.
4) Verifiqei a caixa de lixo, nemum email recebido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na função mail() do PHP, provavelmente faltou definir o cabeçalho (header)..

No cabeçalho, defina o remetente (sender).

 

Olhando superficialmente o arquivo de configurações do sendmail, há uma diretiva chamada "force_sender", a qual serve justamente para esses casos onde há falta de especificação do cabeçalho

 

force_sender=info@foo.bar

 

Em negrito, troque pelo e-mail do remetente ou defina o cabeçalho na função PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

1) O debug.log não encontrei.O error.log tras as seguintes informações:
13/06/23 00:06:01 : Message is missing sender's address
13/06/23 00:10:23 : Message is missing sender's address
13/06/23 00:13:59 : Message is missing sender's address
13/06/23 00:18:43 : Message is missing sender's address
13/06/23 00:18:47 : Message is missing sender's address
13/06/23 00:19:11 : Message is missing sender's address
13/06/23 00:22:17 : Message is missing sender's address
2) Quanto à porta 587 criei uma nova regra no firewall para usá-la.
3) Adicionei sendmail.exe à lista de programas permtidos pelo firewall.
4) Verifiqei a caixa de lixo, nemum email recebido.

 

Existem duas maneiras para resolver seu problema

 

Pelo sendmail.ini

force_sender= coloque seu endereço de e-mail nesta linha

Pelo php é necessario adicionar um cabeçalho ao e-mail com o remetente

<?php
$para      = 'destinatario@destinatario.com';
$ass = 'assunto';
$msg = 'corpo do e-mail';
$cabecalho = "From: seu_email@seu_dominio \r\n";

mail($para, $ass, $msg, $cabecalho);

 

Veja mais sobre a função mail

 

 

Ops o hinom ja tinha postado a resposta...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, mais uma vez obrigado pelo apoio. Estive conversando com um professor e ele disse que no servidor web o envio de e-mails funciona sem problemas, e estou tentando no localhost somente para teste e não consigo enviar e-mails, mas tenho que continuar o estudo do php. Se servir para me ajudarem, estou postando o código .php para envio de e-mail, o [mail function] do php.ini e o sendmail.ini:

 

enviandoemail.php
<?php
$para = 'andreluizlacerda@outlook.com';
$ass = 'Teste';
$msg = 'Testando envio de e-mails';
$cabecalho = "From: andre.si@outlook.com";
mail($para, $ass, $msg, $cabecalho);
echo "E-mail enviado!";
?>
sendmail.ini:
; configuration for fake sendmail
; if this file doesn't exist, sendmail.exe will look for the settings in
; the registry, under HKLM\Software\Sendmail
[sendmail]
; you must change mail.mydomain.com to your smtp server,
; or to IIS's "pickup" directory. (generally C:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.
smtp_server=smtp.live.com
; smtp port (normally 25)
smtp_port=587
; SMTPS (SSL) support
; auto = use SSL for port 465, otherwise try to use TLS
; ssl = alway use SSL
; tls = always use TLS
; none = never try to use SSL
smtp_ssl=TLS
; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn't provided
; if you want to override the value in the registry, uncomment and modify
default_domain=outlook.com
; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging
error_logfile=error.log
; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging
;debug_logfile=debug.log
; if your smtp server requires authentication, modify the following two lines
auth_username=andre.si@outlook.com
auth_password=msconfig10
; if your smtp server uses pop3 before smtp authentication, modify the
; following three lines. do not enable unless it is required.
pop3_server=pop3.live.com
pop3_username=andre.si@outlook.com
pop3_password=*******
; force the sender to always be the following email address
; this will only affect the "MAIL FROM" command, it won't modify
; the "From: " header of the message content
force_sender=andre.si@outlook.com
; force the sender to always be the following email address
; this will only affect the "RCTP TO" command, it won't modify
; the "To: " header of the message content
force_recipient=
; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting. you can manually set the ehlo/helo name if required
hostname=
php.ihi:
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
sendmail_from = andre.si@outlook.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path ="C:\sendmail\sendmail.exe -t"
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On
; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log =

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. o que diz nos arquivos de logs ?

 

2. experimente enviar para um e-mail direrente do remetente

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. o que diz nos arquivos de logs ?

 

2. experimente enviar para um e-mail direrente do remetente

 

Olá hinom,

1. Não sei a quais arquivos de logs você se refere, poderia me dar mais pistas? Qual nome, diretório, etc.

2. Você está dizendo para eu enviar um e-mail para o próprio remetente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. post #12, assunto 1º

2. experimente enviar para um e-mail direrente do remetente


*[erro de digitação]
direrente -> diferente

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.