• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

softklin

[Resolvido]Dúdivas com envio de e-mails, com função mail()

18 mensagens neste tópico

Boas!

É o seguinte, eu gostava de enviar mails a partir do meu PC através de PHP, mas estou a ver que a tarefa está complicada, porque não consegui enviar para o meu endereço no hotmail, e no endereço do GMail, marcou a mensagem como spam... :confused:

Bem, então o que pretendia era usar a minha conta do gmail para enviar o mail, mas com o PHP... Há alguma forma de contornar este problema? Em última nota, eu pretendo mesmo enviar o mail a partir da minha máquina.

Obrigado desde já  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela respota, pedrotuga.

Porém, experimentei o seguinte código, mas não consegui por a funcionar:

<?php
require("class.phpmailer.php");

$mail = new phpmailer();
$mail->From     = "xxx@hotmail.com";
$mail->FromName = "Eu";
$mail->Subject  = "msg de teste";

//dados de smtp
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true;
$mail->Username = "<nome do gmail>";
$mail->Password = "<pass do gmail>";
$mail->Host     = "smtp.gmail.com";
$mail->Port     = 587;

//dados envio
$mail->AddAddress("xxx@hotmail.com","Andre Silva");
$mail->AddAddress("xxx@gmail.com","Andre Silva");
$mail->Mailer   = "smtp";

//envia o mail
if(!$mail->Send())
{
   echo "There was an error sending the message";
   exit;
}

echo "Message was sent successfully";
?>

Sabes se falta alguma coisa ou assim, dá-me o erro do "There was an error..."

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por acaso não tinha passado por essa página, porque me estava a basear nas instruções do meu cliente mail... mas só tinha posto o username, de qualquer maneira serviu... Agora já dá outro erro, que é este:

Warning: fsockopen(): unable to connect to smtp.gmail.com:587 (Uma tentativa de

ligação falhou porque o componente ligado não respondeu correctamente após um pe

ríodo de tempo, ou a ligação estabelecida falhou porque o anfitrião ligado não r

espondeu.

) in C:\Documents and Settings\Andre Silva\Ambiente de trabalho\class.smtp.php o

n line 105

There was an error sending the message

Será por causa do SSL? Tentei ver o código, mas não encontrei nada que falasse sobre o ssl...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim, quase de certeza que é por causa disso. Eu já uma vez tive que mudar o código fonte de um script php precisamente por causa do ssl.

Vamos cá ver então como resolver isso :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

yay!

já descobri.

é mesmo esse o problema, precisas de fazer uma pequena altereção no código fonte dessa classe e depois incluir: 'ssl://' no host

Está aqui explicado:

http://drupal.org/node/39138

Mas experimenta primeiro pois isso é gajo para já ter sido resolvido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, eu tentei de duas maneiras:

1) alterando esta linha:

$mail->Host     = "smtp.gmail.com";

para

$mail->Host     = "ssl://smtp.gmail.com";

e dá este erro:

Warning: fsockopen() expects parameter 2 to be long, string given in C:\Document

s and Settings\Andre Silva\Ambiente de trabalho\class.smtp.php on line 107

There was an error sending the message

2) alterando a função em si no class.smtp.php (sem a alteração anterior)

        #connect to the smtp server
        $this->smtp_conn = fsockopen($host,    # the host of the server
                                     $port,    # the port to use
                                     $errno,   # error number if any
                                     $errstr,  # error message if any
                                     $tval);   # give up after ? secs

para

        #connect to the smtp server
        $this->smtp_conn = fsockopen("ssl://".$host,    # the host of the server
                                     $port,    # the port to use
                                     $errno,   # error number if any
                                     $errstr,  # error message if any
                                     $tval);   # give up after ? secs

e dá o mesmo erro...

A solução de colocar a linha

if($this->Protocol) $host = $this->Protocol."://".$host; 

também não funciona... Até porque estive a ver a classe, e não vi essa propriedade... :confused:

Entretanto estou a tentar mudar também outros valores, como portas e outros.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tentei agora pela porta 465 e deu-me isto:

Warning: fsockopen(): unable to connect to ssl://smtp.gmail.com:465 (Unable to f

ind the socket transport "ssl" - did you forget to enable it when you configured

PHP?) in C:\Documents and Settings\Andre Silva\Ambiente de trabalho\class.smtp.

php on line 107

There was an error sending the message

Eu instalei o WAMP, que já vem com o Apache, PHP, etc... não mexi na configuação, está tudo como default...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens a extensão o OpenSSL instalado? phpinfo(); it ou então vê o php.ini

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vê se na pasta ext do php tens lá um dll em que esteja com openssl no nome. Se sim, editas o php.ini e na parte das extensões adicionas esse dll e copias o ficheiro libeay32.dll para o C:\Windows

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Activei o php_openssl e copiei o ficheiro libeay32.dll para o c:\windows... depois reiniciei o servidor web, mas o erro persiste...

Warning: fsockopen(): unable to connect to ssl://smtp.gmail.com:465 (Unable to f

ind the socket transport "ssl" - did you forget to enable it when you configured

PHP?) in C:\Documents and Settings\Andre Silva\Ambiente de trabalho\class.smtp.

php on line 107

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já deu  ;)

Eu pensei que apenas era necessário activar a extensão pelo menu, mas deve ter havido algum problema, e então segui o conselho de activar pelo php.ini

Message sent sucessfully

Obrigado  :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E recebeste mesmo o mail?

Sim, por acaso pensei que ainda ia demorar um tempo, mas foi quase logo que enviei

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá  :cheesygrin:

Consegui implementar o teu código mas não estou a conseguir compreender onde posso colocar um corpo de mensagem para enviar com o email.

Onde posso adicionar isso??

 

======================================================================================

:wallbash:

Não sei o que se passou mas agora acontece um erro:

Deprecated: Function eregi() is deprecated in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\JOGO Projectofinal\Nova pasta\MAils\TESTAR\class.phpmailer.php on line 592

Ainda não consegui detectar porquê..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora