Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, estou usando uma classe chamada Smtp para o envio do e-mail.
Mas a mensagem é em HTML, a mensagem esta indo correto, o problema só é a imagem do logotipo que não esta chegando. Já tentei inserindo o endereco da imagem no servidor: "http://189.0.0.0/imagens/imagem.jpg" mas mesmo assim não funciona.
Pelo que verifiquei na internet parece que precisa de identificar a imagem, não consegui entender muito bem, Analisei e tentei usar umas classes que fazem isso, mas não tive sucesso. Preciso de um Help de voces, aqui em baixo segue a classe.
class Smtp{
var $conn;
var $user;
var $pass;
var $debug;
function Smtp($host){
$this->conn = fsockopen($host, 25, $errno, $errstr, 30);
$this->Put("EHLO $host");
}
function Auth(){
$this->Put("AUTH LOGIN");
$this->Put(base64_encode($this->user));
$this->Put(base64_encode($this->pass));
}
function Send($to, $from, $subject, $msg){
$this->Auth();
$this->Put("MAIL FROM: " . $from);
$this->Put("RCPT TO: " . $to);
$this->Put("DATA");
$this->Put($this->toHeader($to, $from, $subject));
$this->Put("\r\n");
$this->Put($msg);
$this->Put(".");
$this->Close();
if(isset($this->conn)){
return true;
}else{
return false;
}
}
function Put($value){
return fputs($this->conn, $value . "\r\n");
}
function toHeader($to, $from, $subject){
$header = "Message-Id: <". date('YmdHis').".". md5(microtime()).".". strtoupper($from) ."> \r\n";
$header .= "From: <" . $from . "> \r\n";
$header .= "To: <".$to."> \r\n";
$header .= "Subject: ".$subject." \r\n";
$header .= "Date: ". date('D, d M Y H:i:s O') ." \r\n";
$header .= "X-MSMail-Priority: High \r\n";
$header .= "Content-Type: Text/HTML; charset=iso-8859-1\r\n";
return $header;
}
function Close(){
$this->Put("QUIT");
if($this->debug == true){
while (!feof ($this->conn)) {
fgets($this->conn) . "<br>\n";
}
}
return fclose($this->conn);
}
}
E aqui é o mais importante é onde eu declaro o objeto e preparo a mensagem, eu tirei boa parte do HTML e deixei somente a parte do LOGO mesmo que é minha dúvida.
Configuração da classe.smtp.php /
$host = "$param_web[smtp]"; /*host do servidor SMTP
Usar localhost é a melhor maneira principalmente onde roda o cPanel,
se colocar um host externo a chance de ele ser close relay é muito grande
ai não vai funcionar, da erro de conexãõ*/
$smtp = new Smtp($host);
$smtp->user = "$param_web[email_emitente]"; /usuario do servidor SMTP /
$smtp->pass = "$param_web[senha_emitente]"; / senha dousuario do servidor SMTP/
$smtp->debug =true; / ativar a autenticação SMTP/
/ envia uma mensagem /
$from= "$param_web[email_emitente]"; / seu e-mail /
$to = "$param_web[email_destino]"; / o e-mail cadastrado/
$subject = "Pedido Numero $numero_orc - $nome_vendedor"; / assunto da mensagem /
$css = "<html><head>
<title>Pedido n° $numero_orc</title>
<style type='text/css'>
#logo{
float:left;
width:10px;
height:100px;
border:0px solid #000;
}
</style>
</head>
<body>
";
// Esta div fica a imagem com o link (este link é fictício).
$cab = "<div id='logo'><img src='http://189.0.0.1/imagens/imagem.jpg' /></div>";
$rodape = "</body></hmtl>";
$pagina = $css.$cab.$rodape;
$smtp->Send($to, $from, $subject, $pagina); /faz o envio da mensagem /
Espero que dê para entender. Estou no aguado,Obrigadão
>
Ou, deve ser por causa do caminho da imagem
http://189.0.0.1/imagens/imagem.jpg
Flw
Não... não .. como eu falei no coments, o link que eu usei no exemplo é fictício, não é real.
Eu inseri só para Exemplo.
Mas o link correto está certo, porque quando eu insiro na barra de endereco do Browser a imagem aparece.
o servidor é local ?
pessoas de outras redes tem acesso a arquivos do servidor local ?
se a imagem está no seu servidor local, quando a pessoa recebe o email , ela vai tentar acessar a imagem, se ela nao tiver permissao ela nao consegue ver a imagem.
Não o servidor não é local jpraminelli, eu entendi, mais parece que o bloqueio não é do servidor mas sim o próprio outlook que não deixa.
Eu achei um exemplo aqui que envia a imagem junto, no próprio e-mail, mas não consegui usa-la. Eu inseri e fiz as alterações necessárias no meu código mas mesmo assim não funcionou.
Este codigo parece que codifica a imagem dentro da mensagem HTML.
$imagem_nome="img.jpg";// endereço da imagem no seu computador
$arquivo=fopen($imagem_nome,'r');
$contents = fread($arquivo, filesize($imagem_nome));
$encoded_attach = chunk_split(base64_encode($contents));
fclose($arquivo);
$limitador = "_=======". date('YmdHms'). time() . "=======_";
$mailheaders = "From: americatronic@bol.com\r\n";
$mailheaders .= "MIME-version: 1.0\r\n";
$mailheaders .= "Content-type: multipart/related; boundary=\"$limitador\"\r\n";
$cid = date('YmdHms').'.'.time();
$texto="
<html>
<body><CENTER>
<img src=\"cid:$cid\">
<font size=6><br />blablabla </font>
</body>
</html>
";
$msg_body = "--$limitador\r\n";
$msg_body .= "Content-type: text/html; charset=iso-8859-1\r\n";
$msg_body .= "$texto";
$msg_body .= "--$limitador\r\n";
$msg_body .= "Content-type: image/jpeg; name=\"$imagem_nome\"\r\n";
$msg_body .= "Content-Transfer-Encoding: base64\r\n";
$msg_body .= "Content-ID: <$cid>\r\n";
$msg_body .= "\n$encoded_attach\r\n";
$msg_body .= "--$limitador--\r\n";
mail("americatronic@americatronic.com.br","Assunto",$msg_body, $mailheaders); echo"Mensagem enviada";
Ou, deve ser por causa do caminho da imagem
http://189.0.0.1/imagens/imagem.jpg
Flw