Ir para conteúdo

POWERED BY:

Arquivado

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

Isabelly Lima

enviar email usando o phpmailer

Recommended Posts

Estou com o seguinte código(no meu aqui, está preenchido com meus dados), ele vem de exemplo do próprio pacote do phpmailer:

//error_reporting(E_ALL);
error_reporting(E_STRICT);
date_default_timezone_set( 'America/Sao_Paulo' );
include("class.phpmailer.php");
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$mail             = new PHPMailer();

$body             = $mail->getFile('contents.html');
$body             = eregi_replace("[\]",'',$body);

$mail->IsSMTP();
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
$mail->Port       = 465;                   // set the SMTP port for the GMAIL server

$mail->Username   = "yourusername@gmail.com";  // GMAIL username
$mail->Password   = "yourpassword";            // GMAIL password

$mail->AddReplyTo("yourusername@gmail.com","First Last");

$mail->From       = "name@yourdomain.com";
$mail->FromName   = "First Last";

$mail->Subject    = "PHPMailer Test Subject via gmail";

//$mail->Body       = "Hi,<br>This is the HTML BODY<br>";                      //HTML Body
$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->WordWrap   = 50; // set word wrap
$mail->MsgHTML($body);
$mail->AddAddress("whoto@otherdomain.com", "John Doe");
$mail->AddAttachment("images/phpmailer.gif");             // attachment
$mail->IsHTML(true); // send as HTML
if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}

 

Porém ele esta dando o seguinte erro: Mailer Error: SMTP Error: Could not connect to SMTP host." );

Já testei vários códigos e todos dão esse erro, cheguei a conclusão de que preciso reajustar alguma configuração.

Alguém tem alguma noção do que fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei localmente, e online.. nos dois casos esta dando o mesmo erro.

 

 

 

*Também tenho esse código em que eu uso os dados do meu dominio:


<?php
  require 'class.phpmailer.php';
  require 'class.pop3.php';

  $pop = new POP3();
  $pop->Authorise('pop3.example.com', 110, 30, 'mailer', 'password', 1);

  $mail = new PHPMailer();

  $mail->IsSMTP();
  $mail->SMTPDebug = 2;
  $mail->IsHTML(false);

  $mail->Host     = 'relay.example.com';

  $mail->From     = 'mailer@example.com';
  $mail->FromName = 'Example Mailer';

  $mail->Subject  =  'My subject';
  $mail->Body     =  'Hello world';
  $mail->AddAddress('name@anydomain.com', 'First Last');

  if (!$mail->Send())
  {
    echo $mail->ErrorInfo;
  }
?>

Quanto uso ele da os seguintes erros:

-Localmente:

Deprecated: Function eregi() is deprecated in C:\xampp\htdocs\comtecnologia\phpmailer\class.phpmailer.php on line 599

Warning: fsockopen(): in C:\xampp\htdocs\comtecnologia\phpmailer\class.smtp.php on line 122
Warning: fsockopen(): in C:\xampp\htdocs\comtecnologia\phpmailer\class.smtp.php on line 122
SMTP -> ERROR: Failed to connect to server: php_network_getaddresses: getaddrinfo failed: Este host não é conhecido. (0) SMTP Error: Could not connect to SMTP host." );

 

-Online:

 

PHP Warning: fsockopen() [<a href='function.fsockopen'>function.fsockopen</a>]: php_network_getaddresses: getaddrinfo failed: No such host is known. in E:\home\caixasupor\Web\phpmailer\class.smtp.php on line 122

PHP Warning:  fsockopen() [<a href='function.fsockopen'>function.fsockopen</a>]: unable to connect to relay.caixasuporte.net:25 (php_network_getaddresses: getaddrinfo failed: No such host is known. ) in E:\home\caixasupor\Web\phpmailer\class.smtp.php on line 122

 

PS: Uso host da uol pra postar minha pagina..(não sei se essa informação importa).

Compartilhar este post


Link para o post
Compartilhar em outros sites
  require 'phpmailer/class.phpmailer.php';
  require 'phpmailer/class.pop3.php';

  $pop = new POP3();
  $pop->Authorise('pop3.caixasuporte.net', 110, 30, 'mailer', '**SENHADOEMAIL**', 1);

  $mail = new PHPMailer();

  $mail->IsSMTP();
  $mail->SMTPDebug = 2;
  $mail->IsHTML(false);

  $mail->Host     = 'relay.caixasuporte.net';

  $mail->From     = 'xxxxxx@caixasuporte.net';
  $mail->FromName = 'Example Mailer';

  $mail->Subject  =  'My subject';
  $mail->Body     =  'Hello world';
  $mail->AddAddress('xxxxxxxx@gmail.com', 'First Last');

  if (!$mail->Send())
  {
    echo $mail->ErrorInfo;
  }

 

 

Eliminando possíveis erros:
- versão do meu php da uol: "Nossas hospedagens possuem por padrão o PHP 5.2." então aceita os comandos public e private.
- os arquivos que utilizo do phpmailer estão todos na mesma pasta.
- não enviarei por gmail, então nao precisa de ssl.
e mesmo assim o erro permanece: failed: Este host não é conhecido. (0) SMTP Error: Could not connect to SMTP host.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Isabelly Lima. Eu uso o seguinte código e sempre dá certo.

Consigo usar tanto localmente quanto no servidor.

 

Você precisa saber o endereço correto do SMTP do seu servidor.

 

Dica: 'Na parte $mail->From = "remetente@site.com.br"; troque esse e-mail por um outro fixo (Ex.: notreply@site.com.br ou sitemail@site.com.br). Pois o PHPMailer precisa de um remetente válido.

 

Não é necessário puxar o arquivo class.pop3.php, é só ter ele dentro do diretório onde está a classe do phpmailer.

 

require_once('inc/class.phpmailer.php');

$mail = new PHPMailer();

$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "mail.site.com.br"; // Endereço do servidor SMTP. Coloque o seu corretamente.

$mail->From = "remetente@site.com.br"; // Seu e-mail
$mail->FromName = 'Dian Carlos'; // Seu nome

$mail->AddAddress('destinatario@site.com.br', 'Destinatário'); //Destinatário

$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
$mail->CharSet = 'UTF-8'; // Charset da mensagem (opcional)

$mail->Subject = 'Mensagem de Teste PHPMailer'; // Assunto da mensagem
$mail->Body = '<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<meta charset="UTF-8">


</head>
<body>

Olá Mundo!

</body>
</html>';

$enviado = $mail->Send();

$mail->ClearAllRecipients();
$mail->ClearAttachments();

// Exibe uma mensagem de resultado
if ($enviado) {
 echo 'A mensagem foi enviada';
} else {
 echo 'Ocorreu um erro';
}

 

Boa sorte ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz uma função para facilitar em um projeto meu...

 

function enviaEmail($d, $a, $m) { // $d = email de destino; $a = assunto; $m = mensagem

require "phpmailer/class.phpmailer.php"; 
 
$msg = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";
$msg .= "<html>";
$msg .= "<head></head>";
$msg .= "<body style=\"background-color:#fff;\" >";
$msg .= "<br /><br />";
$msg .= $m;
$msg .= "</body>";
$msg .= "</html>";
 

$mail = new PHPMailer();  
$mail->Mailer     = "smtp";
$mail->IsHTML(true);
$mail->CharSet    = "utf-8";
$mail->SMTPSecure = "tls";
$mail->Host       = "smtp.gmail.com";
$mail->Port       = "587";                   
$mail->SMTPAuth   = "true";
$mail->Username   = "@gmail.com"; // Define o usuário autenticado responsável pelo envio
$mail->Password   = ""; // Define a senha deste usuário citado acima

// Defina o email e o nome que aparecerá como remetente no cabeçalho
$mail->From       = "@gmail.com";
$mail->FromName   = "Administração - servidor";

$mail->AddAddress($d); 
$mail->AddReplyTo($mail->From, $mail->FromName);
$mail->Subject    = $a;
$mail->Body       = $msg;


if (!$mail->Send()){
     echo "Erro de envio: " . $mail->ErrorInfo;
}else{
    echo "Mensagem enviada com sucesso!";
}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço a todos pela ajuda!! :yes:

 

De fato, os códigos enviados a mim estão todos funcionando.. mas não sei por qual motivo, nenhum quis funcionar aqui!

O unico que funcionou foi o que eu achei de exemplo do próprio site de suporte da uol, que é bem complexo por sinal...

 

vou deixar o código aqui pra quem tiver interesse:

 

<?php

/*apenas dispara o envio da mensagem caso houver/existir $_POST['enviar']*/
if (isset($_POST['enviar']))

{
/*digite os destinatarios separados por virgula*/
$destinatarios = 'email-de-teste@seu-dominio, email-de-teste-2@outro-dominio';
/*usuario ou nome completo da conta criada em sua hospedagem, como por exemplo teste@seudominio*/
$usuario = 'usuario@seu-dominio';
/*senha da conta de email acima*/
$senha = 'senha-do-usuario';
/*nome do destinatario no qual receberá a mensagem*/
$nomeDestinatario = 'mensagem do site';

/*abaixo as veriaveis principais, que devem conter em seu formulario*/
$nomeRemetente = $_POST['nomeRemetente'];
$resposta = $_POST['email'];
$assunto = $_POST['assunto'];
$_POST['mensagem'] = nl2br($_POST['mensagem']);

/***********************************A PARTIR DAQUI NAO ALTERAR************************************/
foreach ($_POST as $dados['me1'] => $dados['me2'])

{

$dados['me3'][] = '<b>'.$dados['me1'].'</b>: '.$dados['me2'];

}

$dados['me3'] = '<hr><h4>Mensagem do site</h4>'.implode('<br>', $dados['me3']).'<hr>';

$dados['email'] = array('usuario' => $usuario, 'senha' => $senha, 'servidor' => 'smtp.'.substr(strstr($usuario, '@'), 1), 'nomeRemetente' => $nomeRemetente, 'nomeDestinatario' => $nomeDestinatario, 'resposta' => $resposta, 'assunto' => $assunto, 'mensagem' => $dados['me3']);

ini_set('php_flag mail_filter', 0);

$conexao = fsockopen($dados['email']['servidor'], 587, $errno, $errstr, 10);
fgets($conexao, 512);

$dados['destinatarios'] = explode(',', $destinatarios);

foreach ($dados['destinatarios'] as $dados['1'])

{

$dados['destinatarios']['RCPTTO'][] = '< '.$dados['1'].' >';
$dados['destinatarios']['TO'][] = $dados['1'];

}

$dados['cabecalho'] = array('EHLO ' => $dados['email']['servidor'], 'AUTH LOGIN', base64_encode($dados['email']['usuario']), base64_encode($dados['email']['senha']), 'MAIL FROM: ' => '< '.$dados['email']['usuario'].' >', 'RCPT TO:' => $dados['destinatarios']['RCPTTO'], 'DATA', 'MIME-Version: ' => '1.0', 'Content-Type: text/html; charset=iso-8859-1', 'Date: ' => date('r',time()), 'From: ' => array($dados['email']['nomeRemetente'].' ' => '< '.$dados['email']['usuario'].' >'), 'To:' => array($dados['email']['nomeDestinatario'].' ' => $dados['destinatarios']['TO']), 'Reply-To: ' => $dados['email']['resposta'],'Subject: ' => $dados['email']['assunto'], 'mensagem' => $dados['email']['mensagem'], 'QUIT');

foreach ($dados['cabecalho'] as $dados['2'] => $dados['3'])

{

if (is_array($dados['3']))

{

foreach ($dados['3'] as $dados['4'] => $dados['5'])

{

$dados['4'] = empty($dados['4']) ? '' : $dados['4'];
$dados['5'] = empty($dados['5']) ? '' : $dados['5'];

$dados['4'] = is_numeric($dados['4']) ? '' : $dados['4'];

if (is_array($dados['5']))

{

$dados['5'] = "< ".implode(', ', $dados['5'])." >";

}

fwrite($conexao, $dados['2'].$dados['4'].$dados['5']."\r\n", 512).'<br>';
fgets($conexao, 512);

}

}

else

{

$dados['2'] = empty($dados['2']) ? '' : $dados['2'];
$dados['3'] = empty($dados['3']) ? '' : $dados['3'];

$dados['2'] = is_numeric($dados['2']) ? '' : $dados['2'];

if ($dados['2'] == 'Subject: ')

{

fwrite($conexao, $dados['2'].$dados['3']."\r\n", 512).'<br>';
fwrite($conexao, "\r\n", 512).'<br>';
fgets($conexao, 512);

}

elseif ($dados['2'] == 'mensagem')

{

fwrite($conexao, $dados['3']."\r\n.\r\n").'<br>';
fgets($conexao);

}

else

{

fwrite($conexao, $dados['2'].$dados['3']."\r\n", 512).'<br>';
fgets($conexao, 512);

}

}

}

fclose($conexao);

}

?>
<!-- COMEÇA AQUI O FORMULARIO EM HTML -->
<!-- MAIS CAMPOS PODEM SER INSERIDOS NORMALMENTE ENTRE A TAG FORM -->
<html>
<head>
<title>Formulário de Contato</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form method="post" action="">
<table width="401" bgcolor="#cccccc" border="1" cellspacing="0" cellpadding="0" align="center">
<tr>
<h1 align="center">
Formulario de teste
</h1>
<h5 align="center">
(smtp autenticado)
</h5>
<?php

if (isset($_POST['enviar']))

{

print "<h4 align=\"center\">A mensagem foi enviada!!!</h4>";

}

?>
</tr>
<tr>
<td valign="middle" nowrap>
<p>
<font color="#000">Nome:</font></p>
</td>
<td width="301">
<input type="text" name="nomeRemetente" size="34">
</td>
</tr>
<tr>
<td valign="middle" nowrap>
<p>
<font color="#000">E-mail:</font></p>
</td>
<td>
<input type="text" name="email" size="34">
</td>
</tr>
<tr>
<td valign="middle" nowrap>
<p><font color="#000">Assunto:</font></p>
</td>
<td>
<select name="assunto">
<option value="opnião" selected>opnião</option>
<option value="sugestão">sugestão</option>
<option value="parceria">Parceria</option>
<option value="outros">Outros</option>
</select>
</td>
</tr>
<tr>
<td valign="middle" nowrap align="center">
<p><font color="#000">Mensagem:</font></p>
</td>
<td>
<textarea name="mensagem" cols="34" rows="4"></textarea>
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
<br>
<div align="center">
<input type="submit" name="enviar" value="enviar">
<input type="reset" name="limpar" value="limpar">
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
<!-- TERMINA AQUI O FORMULARIO EM HTML -->

Obrigada!!! *-*

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.