Ir para conteúdo

POWERED BY:

Arquivado

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

Sérgio Mandrake

Enviar email com Anexo(s) usando PHPMailer

Recommended Posts

É preciso ter a classe PHPMailer, pode consegui ela no seguinte endereço: http://phpmailer.codeworxtech.com/

 

Depois de baixar, extraia e pegue os seguintes arquivos class.phpmailer.php e class.smtp.php

Você pode colocar eles em qualquer pasta, depois basta apenas incluir o arquivo class.phpmailer.php, mas irei chamar minha pasta de classes, para melhor compreenssão.

 

Vamos lá

<?php
require 'classes/class.phpmailer.php';

function gpc($str)
{
	return get_magic_quotes_gpc() ? $str : addslashes($str);
}

foreach ($_POST as $var => $str)
{
	$$var = isset($_POST[$var]) ? gpc($str) : NULL;
}

$Host	 = 'smtp.servidor.com.br';
$Name	 = 'Seu nome';
$Username = 'seu_email@servidor.com.br';
$Password = 'sua-senha-aqui';

$Subject  = 'Assunto do email';

// PHPMailer
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->IsHTML(true);

$mail->CharSet	= 'utf-8';	  // Define o charset da mensagem

$mail->SMTPAuth   = true;		 // Permitir autenticação SMTP
$mail->Host	   = $Host;		// Define o servidor SMTP
$mail->Username   = $Username;	// SMTP conta de usuário
$mail->Password   = $Password;	// SMTP conta senha

if (isset($_GET['submit']) && $_GET['submit'] == 'true')
{
	$mail->Subject	= $Subject;		 // Define o assunto da mensagem
	$mail->Body	   = nl2br($mensagem); // Define o corpo da mensagem

	$mail->SetFrom($Username, $Name);	 // Adiciona um "From" endereço
	// $mail->AddAddress($Username, $Name);  // Adiciona um "To" endereço
	$mail->AddAddress($email, $nome);  // Adiciona um "To" endereço
	$mail->AddReplyTo($email, $nome);	 // Adiciona um "Reply-to" endereço

	$files = $_FILES['files'];
	for ($i=0; $i < sizeof($files); $i++)
	{
		if (is_uploaded_file($files['tmp_name'][$i]))
		{
			// Adiciona um anexo de um caminho sobre o sistema de ficheiros
			$mail->AddAttachment($files['tmp_name'][$i], $files['name'][$i]);
		}
	}
	
	if ($mail->Send())
	{
		echo 'Mensagem enviada';
	}
	else
	{
		echo 'Mailer Error: ' . $mail->ErrorInfo;
	}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-BR" lang="pt-BR">

<head>
	<title></title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
	<form enctype="multipart/form-data" action="index.php?submit=true" method="post">
		Nome <input type="text" name="nome" /><br />
		Email <input type="text" name="email" /><br />
		Mensagem <textarea name="mensagem" cols="20" rows="5"></textarea><br />
		<input type="file" name="files[]" /><br />
		<input type="file" name="files[]" /><br />
		<input type="file" name="files[]" /><br />
		<input type="submit" value="Enviar" />
	</form>
</body>

</html>

Ok, esta tudo comentádo. Caso você queria usar isso em um formlário de contato, pode remover a parte de anexo, e colocar o $mail->AddAddress(); direcionado para o email que deseja receber as mensagens de contato (:

 

Abraço e até

 

http://www.sergio9.net/

Compartilhar este post


Link para o post
Compartilhar em outros sites

SMTP Error: Could not authenticate. Mailer Error: SMTP Error: Could not authenticate.

 

esta dando esse erro amigo porque? meu login senha e o smtp do gmail esta correto.

 

$Host = 'smtp.gmail.com';

$Name = 'guga';

$Username = 'gil.dolar@gmail.com';

$Password = 'xxx';

 

o que pode estar dando errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente retirar o que vem após o arroba, deixando apenas seu nome de usuário

 

O GMail usa SSL. Tem que mudar a porta de acesso. Pesquise por "PHPMailer Gmail" no Google, que encontrará a maneira correta de usar o PHPMailer para o GMail

Compartilhar este post


Link para o post
Compartilhar em outros sites

O GMail usa SSL. Tem que mudar a porta de acesso.Pesquise por "PHPMailer Gmail" no Google, que encontrará a maneira correta de usar o PHPMailer para o GMail

na verdade o PHPMailer ja vem com uma pasta "examples" que tem dentro um arquivo chamado test_gmail.php la tem um exemplo de envio com Gmail dê uma olhada. de qualquer forma parabens pela iniciativa de criar e postar sua classe =]

 

valww

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito pratico mas no meu ta dano esse erro

 

Invalid address: afaInvalid address: afaYou must provide at least one recipient email address. Mailer Error: You must provide at least one recipient email address.

 

codigo parece beleza =( o smtp do uol host q estou usando usa outra porta q nao e padrao creio eu usa a porta 587 o normal e porta 25 ne?

 

olha a pagina q to testano :

 

http://teste.funilariabergamasco.com.br/

 

<?php
require 'classes/class.phpmailer.php';

function gpc($str)
{
        return get_magic_quotes_gpc() ? $str : addslashes($str);
}

foreach ($_POST as $var => $str)
{
        $$var = isset($_POST[$var]) ? gpc($str) : NULL;
}

$Host    = 'smtp.funilariabergamasco.com.br';
$Name    = 'faleconosco';
$Username = 'faleconosco@funilariabergamasco.com.br';
$Password = 'xxxxx';

$Subject  = 'Assunto do email';

// PHPMailer
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->IsHTML(true);

$mail->CharSet  = 'utf-8';        // Define o charset da mensagem

$mail->SMTPAuth   = true;                // Permitir autenticação SMTP
$mail->Host        = $Host;             // Define o servidor SMTP
$mail->Username   = $Username;  // SMTP conta de usuário
$mail->Password   = $Password;  // SMTP conta senha

if (isset($_GET['submit']) && $_GET['submit'] == 'true')
{
        $mail->Subject  = $Subject;              // Define o assunto da mensagem
        $mail->Body        = nl2br($mensagem); // Define o corpo da mensagem

        $mail->SetFrom($Username, $Name);        // Adiciona um "From" endereço
        // $mail->AddAddress($Username, $Name);  // Adiciona um "To" endereço
        $mail->AddAddress($email, $nome);  // Adiciona um "To" endereço
        $mail->AddReplyTo($email, $nome);        // Adiciona um "Reply-to" endereço

        $files = $_FILES['files'];
        for ($i=0; $i < sizeof($files); $i++)
        {
                if (is_uploaded_file($files['tmp_name'][$i]))
                {
                        // Adiciona um anexo de um caminho sobre o sistema de ficheiros
                        $mail->AddAttachment($files['tmp_name'][$i], $files['name'][$i]);
                }
        }
        
        if ($mail->Send())
        {
                echo 'Mensagem enviada';
        }
        else
        {
                echo 'Mailer Error: ' . $mail->ErrorInfo;
        }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-BR" lang="pt-BR">

<head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
        <form enctype="multipart/form-data" action="index.php?submit=true" method="post">
                Nome <input type="text" name="nome" /><br />
                Email <input type="text" name="email" /><br />
                Mensagem <textarea name="mensagem" cols="20" rows="5"></textarea><br />
                <input type="file" name="files[]" /><br />
                <input type="file" name="files[]" /><br />
                <input type="file" name="files[]" /><br />
                <input type="submit" value="Enviar" />
        </form>
</body>

</html>

vlw ajuda

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.