Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Classe para envio de email que aceita SMTP autenticado, não necessita de servidor SMTP local, funciona em qualquer plataforma, sem limites de anexo.
para enviar email HTML colocasse como um arquivo anexado
smtpmail.class.php
<?php /** * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University of California, Berkeley nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * Classe de manipulação do protocolo SMTP * @author Bruno Pitteli Gonçalves <scorninpc<at>gmail<dot>com> * @version 0.2 * @license BSD license * * 0.1 * Classe inicial * * 0.2 * Possibilidade de envio de email HTML * * 0.3 * Suporte a varios TOs separados por; * * 0.4 * Suporte à mudança da codificação * */ // Seta o tempo limite para 60 segundos set_time_limit(120); /** * SMTPMAIL * Escrito por Bruno Pitteli Gonçalves <scorninpc()gmail*com> * Classe que trata o protocolo SMTP */ class SMTPMAIL { /** * Variavel que armazena o endereço do servidor de email * @access public */ public $Servidor; /** * Variavel que armazena a porta do servidor de email * @access public */ public $Porta = 25; /** * Variavel que armazena a codificação * @access public */ public $Codificacao = 'ISO-8859-1'; /** * Variavel que armazena se o servidor é autenticado * @access public */ public $Autenticado; /** * Variavel que armazena o usuario do servidor de email, caso autenticado * @access public */ public $Usuario; /** * Variavel que armazena a senha do usuario do servidor de email, caso autenticado * @access public */ public $Senha; /** * Variavel que armazena o email de quem está enviando * @access public */ public $EmailDe; /** * Variavel que armazena o nome+email de quem está enviando, para aparecer no email * @access public */ public $EmailDeVisual; /** * Variavel que armazena o email para quem vai * @access public */ public $EmailPara; /** * Variavel que armazena o nome+email de quem está enviando, para aparecer no email * @access public */ public $EmailParaVisual; /** * Variavel que armazena o assunto do email * @access public */ public $Assunto; /** * Variavel que armazena a senha corpo do email * @access public */ public $Corpo; /** * Vetor que armazena os arquivos para anexo * @access private */ private $Anexos = array(); /** * Variavel que armazena a situação do envio do email * @access private */ private $erros = FALSE; /** * Construtor da classe * @name __construct * @access public */ public function __construct() { } // __construct /** * Método que anexa um arquivo ao vetor * @name anexarArquivo * @param string $path - Caminho do arquivo * @access public */ public function anexarArquivo($path) { $this->Anexos[] = $path; } // anexarArquivo /** * Método que verifica se a classe esta pronta está pronta para o envio de email * @name verificarIntegridade * @access private * @return boolean */ private function verificarIntegridade() { // Verifica as pendencias se o servidor for autenticado if($this->Autenticado === TRUE) { if((empty($this->Usuario)) || (empty($this->Senha))) { $this->erros = TRUE; return FALSE; } } // Verifica se o servidor foi digitado if(empty($this->Servidor)) { $this->erros = TRUE; return FALSE; } // Verifica se os outros parametros são validos if((empty($this->EmailDe)) || (empty($this->EmailPara)) || (empty($this->Assunto)) || (empty($this->Corpo))) { $this->erros = TRUE; return FALSE; } return TRUE; } // verificarIntegridade /** * Método que espera a resposta do servidor * @name esperarResposta * @access private * @param integer $socket - Ponteiro para o socket * @param integer $response - Codigo de resposta OK * @return boolean */ private function esperarResposta($socket, $response) { while (substr($server_response, 3, 1) != ' ') { if (!($server_response = fgets($socket, 256))) { $this->erros = TRUE; return FALSE; } if (!(substr($server_response, 0, 3) == $response)) { $this->erros = TRUE; return FALSE; }// echo '<font color="red">S</font> <- ' . $server_response . '<br />'; } return TRUE; } // esperarResposta /** * Método que envia uma string ao servidor * @name enviaPacote * @access private * @param integer $socket - Ponteiro para o socket * @param integer $data - String contendo as informações à serem enviadas * @return boolean */ private function enviaPacote($socket, $data) { if(!fputs($socket, $data . "\r\n")) { return FALSE; }// echo "<font color=\"blue\">C</font> -> " . $data . "<br />"; return TRUE; } // enviaResposta /** * Método que envia o email * @name Enviar * @access prublic * @return boolean */ function Enviar() { $boundary = md5(date('r', time())); // Verifica se esta pronto para iniciar o envio if(!$this->verificarIntegridade()) { return FALSE; } // Tenta conectar if(!$socket = fsockopen($this->Servidor, $this->Porta, $errno, $errstr, 30)) { $this->erros = TRUE; return FALSE; } // Espera por resposta $this->esperarResposta($socket, "220"); // Se o servidor é autenticado if($this->Autenticado) { $this->enviaPacote($socket, "EHLO " . $this->Servidor); $this->esperarResposta($socket, "250"); $this->enviaPacote($socket, "AUTH LOGIN"); $this->esperarResposta($socket, "334"); $this->enviaPacote($socket, base64_encode($this->Usuario)); $this->esperarResposta($socket, "334"); $this->enviaPacote($socket, base64_encode($this->Senha)); $this->esperarResposta($socket, "235"); } else { $this->enviaPacote($socket, "HELO " . $this->Servidor); $this->esperarResposta($socket, "250"); } // Envia quem está mandando o email $this->enviaPacote($socket, "MAIL FROM: " . $this->EmailDe); $this->esperarResposta($socket, "250"); // Envia quem esta recebendo o email $Emails = explode(';', $this->EmailPara); for($i=0;$i<count($Emails);$i++) { $this->enviaPacote($socket, "RCPT TO: " . $Emails[$i]); $this->esperarResposta($socket, "250"); } // Diz ao servidor que estou pronto para enviar a mensagem $this->enviaPacote($socket, "DATA"); $this->esperarResposta($socket, "354"); // Cabeçalho do email if(strlen($this->EmailDeVisual) == 0) { $this->enviaPacote($socket, "From: " . $this->EmailDe); } else { $this->enviaPacote($socket, "From: " . $this->EmailDeVisual . " <" . $this->EmailDe . ">"); } $To = 'To: '; $Emails = explode(';', $this->EmailPara); for($i=0; $i<count($Emails); $i++) { if(empty($Emails[$i])) { continue; } $To .= $Emails[$i] . ', '; } $To = substr($To, 0, strrpos($To, ',')); $this->enviaPacote($socket, $To); // Mando o assunto do email $this->enviaPacote($socket, "Subject: " . $this->Assunto); // Envia o cabeçalho $this->enviaPacote($socket, "Date: " . date("d M y H:i:s")); $this->enviaPacote($socket, "MIME-Version: 1.0"); $this->enviaPacote($socket, "Content-Type: multipart/mixed; boundary=" . $boundary); $this->enviaPacote($socket, "--" . $boundary); $this->enviaPacote($socket, "Content-Type: text/html; charset=" . $this->Codificacao . "\r\n"); $this->enviaPacote($socket, $this->Corpo); $this->enviaPacote($socket, "\r\n"); // Verifica se existe arquivo para ser enviado junto if(count($this->Anexos) > 0) { for($i=0; $i<count($this->Anexos); $i++) { $info = pathinfo($this->Anexos[$i]); // Pega o tipo para o MIME TYPE strtolower($info['extension']); switch($tipo) { case "jpeg": case "jpg": $Tipo = "image/jpeg"; break; case "gif": $Tipo = "image/gif"; break; case "doc": $Tipo = "application/msword"; break; case "rar": $Tipo = "application/rar"; break; case "zip": $Tipo = "application/zip"; break; case "pdf": $Tipo = "application/pdf"; break; default: $Tipo = "application/octet-stream"; break; } // Envia os cabeçalhos do anexo $this->enviaPacote($socket, "--" . $boundary); $this->enviaPacote($socket, "Content-Type: " . $Tipo . "; name=\"". $info['filename'] . "\""); $this->enviaPacote($socket, "Content-Transfer-Encoding: base64"); $this->enviaPacote($socket, "Content-Disposition: attachment; filename=\"" . $info['filename'] . "\""); $this->enviaPacote($socket, "\r\n"); // Envia o arquivo codificado $this->enviaPacote($socket, base64_encode(file_get_contents($this->Anexos[$i]))); $this->enviaPacote($socket, "\r\n"); } $this->enviaPacote($socket, "--" . $boundary . "--"); } // Avisa o o termino do envio $this->enviaPacote($socket, "\r\n\r\n."); $this->esperarResposta($socket, "250"); // Sai do servidor e fecha o socket $this->enviaPacote($socket, "QUIT"); fclose($socket); // Retorna FALSE se o email não foi enviado if($this->erros == TRUE) { return FALSE; // Ou TRUE se não houve erro } else { return TRUE; } } // Enviar }?>
explicações
$Email = new SMTPMAIL; - Cria novo objeto
Atributos
$Email->Servidor - Servidor SMTP (não aceita SSL como gmail AINDA)
$Email->Autenticado - True se for autenticado, false se não for autenticado
$Email->Codificacao - Seta a codificação (UTF-8, ISO-8859-1, ...)
$Email->Usuario - Usuario do servidor SMTP
$Email->Senha - Senha do servidor SMTP
$Email->EmailDe - Email de quem está enviando o email
$Email->EmailPara - Email de quem irá receber o email
$Email->Assunto - Assunto do email
$Email->Corpo - Mensagem do email
Métodos
$Email->Anexar() - Anexa um arquivo, pode ser usado varias vezes, retorna true se enviar ou false se tiver erro
$Email->Enviar() - Envia o email, retorna true se enviar ou false se tiver erro
exemplo.php
<?php require_once('smtpmail.class.php'); $smtp = new SMTPMAIL(); $smtp->Servidor ='smtp.mail.yahoo.com.br'; $smtp->Autenticado = TRUE; $smtp->Usuario = "meu_usuario"; $smtp->Senha = "minha_senha"; $smtp->Codificacao = "UTF-8"; $smtp->EmailDe = 'bruno0@gmail.com'; $smtp->EmailDeVisual = 'Bruno Pitteli Gonçalves <bruno.goncalves@added.com.br>'; $smtp->EmailPara = 'bruno1@gmail.com;bruno2@gmail.com'; $smtp->Assunto = 'Email Teste'; $smtp->Corpo = '<b>MEU CORPO HTML</b>'; $smtp->anexarArquivo('D:\\Bruno\\Fotos&Videos\\Carros\\03-07-07_0916.jpg'); $smtp->anexarArquivo('D:\\Bruno\\Fotos&Videos\\Carros\\Carro_11.jpg'); if($smtp->Enviar()) { echo 'ok'; } else { echo 'errado'; }?>
Sómente lembrando, PHP roda do em server side, logo os arquivos para o anexo devem estar no servidor do script. Se você precisa enviar um email de outro lugar, implemente um script de upload e depois envie o email
espero que gostem
Caro Diego Polla,este erro significa que seu servidor PHP não suporta conexão Smtp
ScornInPCNão consegui enviar email , recebo a mensagem do script "Email não pode ser enviado". Acho q não tem nada de esrrado nas configurações. Estou usando smpt da bol, e quando uso o outlook com as mesmas configurções funciona legal. Saberia me dizer o que podeia ser?
eu configurei lá, e no meu deu o seguinte erro:
CODE
erros=TRUE; return FALSE; } $File=fread($fp, filesize($arq)); fclose($fp); return base64_encode($File); } //Retorna o nome do arquivo function PegarNome($str) { $Nome=""; $i=strlen($str)-1; while($str[$i]!=$this->Barra) $i--; $i++; $j=0; for($i; $iAnexos[$this->NumAnexos]=$arq; $this->NumAnexos++; return TRUE; } //Função que verifica se as variaveis estão OK function Verificar() { //Verifica se é um servidor autenticado if( $this->Autenticado ) if( !isset($this->Usuario) || !isset($this->Senha) ) //Se for autenticado, verifica o usuario e a senha $this->erros=TRUE; //Verifica se o servidor foi digitado if( !isset($this->Servidor) ) $this->erros=TRUE; //Verifica se os parametros são validos if( !isset($this->EmailDe) || !isset($this->EmailPara) || !isset($this->Assunto) || !isset($this->Corpo) ) $this->erros=TRUE; } //Função que espera o servidor responder function Esperar_Resp($socket, $response, $line = __LINE__) { while (substr($server_response, 3, 1) != ' ') if (!($server_response = fgets($socket, 256))) $this->erros=TRUE; if (!(substr($server_response, 0, 3) == $response)) $this->erros=TRUE; } function Enviar() { $this->Verificar(); if( !$this->erros ) { //Tenta conectar if( !$socket=fsockopen($this->Servidor, $this->Porta, $errno, $errstr, 20) ) $this->erros=TRUE; //Espera por resposta $this->Esperar_Resp($socket, "220", __LINE__); //Verifica se o email esta sendo autenticado //Caso for ele ira mandar um EHLO, pra dizer que vai ser autenticado //Caso não for ele manda um HELO simples. if( $this->Autenticado ) { fputs($socket, "EHLO " . $this->Servidor . "\r\n"); $this->Esperar_Resp($socket, "250", __LINE__); fputs($socket, "AUTH LOGIN\r\n"); $this->Esperar_Resp($socket, "334", __LINE__); fputs($socket, base64_encode($this->Usuario) . "\r\n"); $this->Esperar_Resp($socket, "334", __LINE__); fputs($socket, base64_encode($this->Senha) . "\r\n"); $this->Esperar_Resp($socket, "235", __LINE__); } else { fputs($socket, "HELO " . $this->Servidor . "\r\n"); $this->Esperar_Resp($socket, "250", __LINE__); } //Envia quem está mandando o email fputs($socket, "MAIL FROM: " . $this->EmailDe . "\r\n"); $this->Esperar_Resp($socket, "250", __LINE__); //Diz ao servidor quem vai receber o email fputs($socket, "RCPT TO: " . $this->EmailPara . "\r\n"); $this->Esperar_Resp($socket, "250", __LINE__); //Diz ao servidor que estou pronto para enviar a mensagem fputs($socket, "DATA\r\n"); $this->Esperar_Resp($socket, "354", __LINE__); //Cabeçalho do email fputs($socket, "From: " . $this->EmailDe . "\r\n"); fputs($socket, "To: " . $this->EmailPara . "\r\n"); //Mando o assunto do email fputs($socket, "Subject: " . $this->Assunto . "\r\n"); //Envia o cabeçalho fputs($socket, "MIME-Version: 1.0\r\n"); fputs($socket, "Content-Type: multipart/mixed;\r\n"); fputs($socket, " boundary=KkK170891tpbkKk__FV_KKKkkkjjwq\r\n"); fputs($socket, "\r\n"); fputs($socket, "\r\n"); fputs($socket, "--KkK170891tpbkKk__FV_KKKkkkjjwq\r\n"); fputs($socket, "Content-Type: text/plain; charset=US-ASCII\r\n"); fputs($socket, "\r\n"); fputs($socket, $this->Corpo); fputs($socket, "\r\n\r\n"); //verifica se existe arquivo para ser enviado junto if($this->NumAnexos>0) { for($i=0; $i<$this->NumAnexos; $i++) { //Pega o tipo para o MIME TYPE $tipo=$this->PegarTipo($this->Anexos[$i]); strtolower($tipo); switch($tipo) { case "jpeg": case "jpg": $Tipo="image/jpeg"; break; case "gif": $Tipo="image/gif"; break; case "doc": $Tipo="application/msword"; break; case "rar": $Tipo="application/rar"; break; case "zip": $Tipo="application/zip"; break; default: $Tipo="application/octet-stream"; break; } //Pega o nome do arquivo $Nome=$this->PegarNome($this->Anexos[$i]); fputs($socket, "--KkK170891tpbkKk__FV_KKKkkkjjwq\r\n"); fputs($socket, "Content-Type: " . $Tipo . "; name=\"". $Nome . "\"\r\n"); fputs($socket, "Content-Transfer-Encoding: base64\r\n"); fputs($socket, "Content-Disposition: attachment; filename=\"" . $Nome . "\"\r\n"); fputs($socket, "\r\n"); fputs($socket, $this->CodarArquivo($this->Anexos[$i])); fputs($socket, "\r\n"); } fputs($socket, "--KkK170891tpbkKk__FV_KKKkkkjjwq--\r\n"); } //Avisa o servidor que ja acabei de enviar a mensagem fputs($socket, "\r\n.\r\n"); $this->Esperar_Resp($socket, "250", __LINE__); //Sai do servidor e fecha o socket fputs($socket, "QUIT\r\n"); fclose($socket); //Retorna um TRUE pra dizer que o email foi enviado if ($this->erros==TRUE) return FALSE; else return TRUE; } } } ?>bom este erro acima eu corrigi, foi só alterar a abertura do php, trocar o </ por <?php,. porém agora ele fica lá processando um tempão, para ser sincero, deixou o pc lento e não terminou a execussão. flw
DEU CERTO !!!!!
Cara não to acreditando...
Passei 2 dias inteiros tentando arrumar uma forma de mandar email através de formulário, testei diversas classes, funções e nada.
Uma hora eu encontrava uma solução que não atendia, outra as vezes parecia que atendia mas não funcionava.
UFA...
Só lembrando o meu problema era o seguinte:
Enviar Formulário por email(sem anexo mesmo), em ambiente Windows+PHP rodando em servidor local, utilizando servidor SMTP externo, já que não tenho servidor SMTP rodando aqui na minha rede.
Depois de várias tentativas enfim deu certo !
:-)
Obrigado !
Tenho um pergunta.
pra que serve a linha
$Email->Barra="\\"; //barra pra windows
pra que serve essa "\\"?????
==========================
a sim... não estou conseguindo enviar o email.
coloquei um arquivo chamado "temp.dat" dentro da pasta aonde o arquivo que envia o email e a classe estão, mas o email não é enviado e acontece um erro dizendo que o tempo maximo para o envio é de 60 segundos..
pode me ajudar?
Pessoal, atualizei a classe, com algumas funcionalidades ok?
/** * 0.1
* Classe inicial
*
* 0.2
* Possibilidade de envio de email HTML
*
* 0.3
* Suporte a varios TOs separados por;
*
**/
Raficcha:
Isso foi removido, não servia para nada mesmo. =D
A parte do Anexo não funcionou aqui...
Troquei o:
$Email->Anexar("arqui1");
por
$Email->anexarArquivo("arqui1");
mas mesmo assim, muito obrigado!
Certo hgb7,
Ja mudei o nome do método.
Mas pq não funcionou? posta o código ai pra gente ver =)
Aqui no meu deu esse erro:
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/admin/public_html/testes/email/smtp.class.php on line 58
sabe me dizer o quer dizer esse erro?
Parece que você não esta com o PHP 5, pois ele não esta reconhecendo a palavra "public"
$Email->anexarArquivo("D:\Documents and Settings\henrique\Meus documentos\jantar_acridas080918.jpg"); //Anexo 1
//$Email->anexarArquivo("arqui2"); //Anexo 2
Mudei só isso mesmo... mas quando envio com anexo aparece isso:
Corpo do email --90ccb306c46c988e47d6799e2108ccf7 Content-Type: application/octet-stream; name="jantar_acridas080918" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="jantar_acridas080918" /9j/4AAQSkZJRgABAQEBLAEsAAD... (e um monte de codigo da mensagem...)
Como fazer para a aparecer a imagem? dá para configurar para mandar para várias pessoas ao mesmo tempo? precisa do phpmailer para rodar este script?
Obrigado
seu arquivo não tem extenssão? pode ser isso, não testei =/
só precisa de suporte à socket.
quando for usar caminhos windows, use \\
"D:\\Documents and Settings\\henrique\\Meus documentos\\jantar_acridas080918.jpg"
para escapar os caracteres.
para enviar para varios emails, faça assim
$Email->EmailPara = 'bruno@gmail.com;bruno2@gmail.com;bruno3@gmail.com'
[]'s
Opa! funcionou... vlw... só que chegou com .dat ... sabe pq?
e como mandar para vários email, sem os outros veem que foi para vários? somente com aqueles "emails lista" ?
Obrigado pela atenção
foi .dat? aheuahe sei pq não, só vendo o código :P/>
esse negocio de ir como oculto é furada, ainda não consegui fazer isso. Uso em um sistema de cotações, e para que os fornecedores não vejam o email uns dos outros, eu envio "um à um", é mais garantido.
mude o email e envie outra vez, não precisa criar a classe outra vez
foreach($fornecedores as $fornecedor) {
$Email->EmailPara = $fornecedor;
$Email->Enviar();
}
sacou? http://forum.imasters.com.br/public/style_emoticons/default/clap.gif/>Como faço para o email ser enviado no formata html?
Pessoal, atualizei o teste na mensagem principal tambem.
para enviar email HTML, é só colocar o HTML no CORPO
$smtp->Corpo = '<b>MEU CORPO HTML</b>';
Fiz isso mais naum deu certo brother, olha só
Naum fica em html e a acentuação fica com simbolos
/*
* Duvidas:
* http://www.fai.com.br/forum &&
* scorninpc[(at])gmail([dot)]com &&
* #motd@irc.freenode.net
*/
include "smtp.class.php";
$Email = new SMTPMAIL();
$Email->Servidor="smtp.sdfsdf.com.br"; //Servidor
$Email->Autenticado=TRUE; //É autenticado
$Email->Usuario="asdsad"; //Usuario
$Email->Senha="ssss"; //Senha
$Email->EmailDe="$email"; //Seu email
$Email->EmailPara="sdfsdf@adasd"; //Destino
$Email->Assunto="Formulário de contato Mercoplaza.com.br"; //Assunto
$Email->Corpo="<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN [http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>](http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd)
<html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8 />
<title>Formulario de contato</title>
<style type=text/css>
.tabela {
font-size: 10px;
font-family: Verdana, Arial, Helvetica, sans-serif;
color:#666666;
background: #ffffff;
BORDER-RIGHT: #666666 1px dotted;
BORDER-TOP: #666666 1px dotted;
BORDER-LEFT: #666666 1px dotted;
BORDER-BOTTOM: #666666 1px dotted;
}
</style>
</head>
<body>
<table width=600 border=0 class=tabela>
<tr>
<td valign=top></div>
<p><strong>Nome:</strong><br>
$nome<br>
<br>
<strong>Telefone:</strong><br>
$telefone<br>
<br>
Email:<br>
$email<br>
<br>
Mensagem: <br>
$mensagem<br>
<br>
<br>
<br>
</p>
</td>
</tr>
</table></body>
</html>/* $Email->anexarArquivo("arqui1"); //Anexo 1
$Email->anexarArquivo("arqui2"); //Anexo 2
*/
if($Email->Enviar()) //Envia o email
echo "Email enviado com sucesso, obrigado pelo contato.";
else
echo "Email não pode ser enviado";beleza,
sobre os caracteres, eu estou usando ISO-8859-1 no email, e você UTF-8 no html, não sei até que ponto isso pode inteferir.
talvez setar a codificação ao enviar email seja uma melhoria a ser feita.
Isso setar a codificação iria ser ótimo, como podemos fazer isso, já que esse programação é orientada objetos, naum saberia fazer
Pronto, coloquei outra versão na mensagem principal.
Essa versão tem a propriedade
$smtp->Codificacao
Atualizei os testes tambem, valeu.
Valeu ScornInPC
http://forum.imasters.com.br/public/style_emoticons/default/clap.gif/>
Tentei fazer um esquema para mandar automaticamente para vários destinos, mas dá este erro:
Notice: Undefined variable: server_response in C:\xampp\htdocs\xampp\acridas\smtpmail.class.php on line 199
Pode dar uma olhada no código? Obrigado...
<?php
require_once('smtpmail.class.php');
include("init.php");
$relaciona = $_GET['relaciona'] ? "and relaciona = ".$_GET['relaciona'] : "";
Abre_Conexao();
$busca = mysql_query("SELECT * FROM usuarios,estados where fk_estado = id_estado and cep != ' ' and relaciona = '{$_GET['relaciona']}';");
while($dados = mysql_fetch_array($busca)) {
$email = $dados["email"];
$smtp = new SMTPMAIL();
$smtp->Servidor ='smtp.site.org.br';
$smtp->Autenticado = TRUE;
$smtp->Usuario = "meulogin";
$smtp->Senha = "minhasenha";
$smtp->Codificacao = "UTF-8";
$smtp->EmailDe = 'contato@site.org.br';
$smtp->EmailDeVisual = 'Site <contato@site.org.br>';
$smtp->EmailPara = '$email';
$smtp->Assunto = 'Email Teste';
$smtp->Corpo = '<img src="[http://forum.imasters.com.br//style_avatars//IPB_Community_Pack//Pow.gif">';](http://forum.imasters.com.br//style_avatars//IPB_Community_Pack//Pow.gif)
//$smtp->anexarArquivo('');
//$smtp->anexarArquivo('D:\\Bruno\\Fotos&Videos\\Carros\\Carro_11.jpg');
}
if($smtp->Enviar()) {
echo 'ok';
} else {
echo 'errado';
}
?>
Obrigado...Coloque isso na linha 199, antes do while()
$server_response = "";
e me diga se funciona
Corrigindo ...
Sim... agora da "ok", mas não manda ainda...
Alguma idéia?
Olá ScornInPC,Tentei utilizar sua classe, mas obtive o seguinte erro:
Você poderia me ajudar dissendo o que tenho de errado no meu servidor?Grato. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif/>