Enviando e-mail com anexos usando o PHPMailer
Enviando e-mail com anexo via form em HTML utilizando a classe PHPMailer
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?
Já sabemos enviar um e-mail simples via formulário em HTML+PHPMailer (veja em http://www.devmedia.com.br/articles/viewcomp.asp?comp=9642). A idéia agora é anexar images do tipo JPEG (.JPG) e enviar também via site como anexo para um e-mail específico.
Em seguida precisamos implementar o formulário de upload dos aqruivos que irá interagir com os usuários. Será usado o script de upload de mútiplos arquivos (download do script em http://www.plus2net.com/php_tutorial/multi-upload.zip), salve com o nome que desejar:
$max_img = 5; // Maximum number of images value to be set here
echo “<-form method=post action=attach.php enctype=’multipart/form-data’>”;
for($i=1; $i<=$max_no_img; $i++){
echo “<-tr><-td>Imagem $i: <-/td><-td>
<-input type=file name=’images[]‘ class=’bginput’>
<-/td><-/tr>”;
}
?>
Agora vamos a parte do PHP:
$name = “the Submitter”;
$email_subject = “E-mail com imagnes anexadas”;
$Email_msg =”TESTE: \n”;
$Email_to = “seu-email@email.com”; // the one that recieves the email
$email_from = “email-usuario@email.com”;
$dir = “uploads/$filename”;
chmod(”uploads”, 0777);
$attachments = array();
//check formato
function checkType()
{
while(list($key,$value) = each($_FILES[images][type]))
{
strtolower($value);
if($value != “image/jpeg” AND $value != “image/pjpeg” AND $value != “”)
exit(’Desculpe, formato dos arquivos é ’.($value).’ , é aceito somente imagens tipo JPEG.’);
}
}
checkSize();
}
//check tamanho
function checkSize()
{
while(list($key,$value) = each($_FILES[images][size]))
{
$maxSize = 5000000;
if(!empty($value))
{
if ($value > $maxSize)
{
echo "Deculpe o tamanhos do(s) arquivo(s) é muito grande... o tamanho máximo suportado é $maxSize Bytes = 5MB”;
exit();
}
else
{
$result = “Tamanho do(s) arquivo(s) OK”;
}
}
}
uploadFile();
}
//função de upload
function uploadFile()
{
global $attachments;
while(list($key, $value) = each($_FILES[images][name]))
{
if(!empty($value))
{
$filename = $value;
//vetor de arquivos - array_push($attachments, $filename);
$dir = “uploads/$filename”;
chmod(”uploads”, 0777);
$success = copy($_FILES[images][tmp_name][$key], $dir);
}
}
if ($success)
{
echo ”Seus arquivos foram enviados (upload) com sucesso para o servidor e serão anexados”;
SendIt();
}
else
{
exit(”Desculpe o servidor não conseguiu receber o upload dos arquivos”);
}
}
//PHPMailer com anexos
function SendIt()
{
//variáveis
global $attachments, $name, $Email_to, $Email_msg, $email_subject, $email_from;
$Email = new PHPMailer();
$Email->IsSMTP(); //via SMTP
$Email->Host = “localhost”; //SMTP servers
$Email->SMTPAuth = false; //autenticação SMTP
$Email->From = $email_from;
$Email->FromName = $name;
$Email->AddAddress($Email_to);
$Email->AddReplyTo($email_from);
$Email->WordWrap = 50; //tamanho da msg
//anexando todos os arquivos para envio
foreach($attachments as $key => $value)
{
$Email->AddAttachment(”uploads”.”/”.$value);
}
$Email->Body = $Email_msg. ”Nome : “ .$name.”\n”;
$Email->IsHTML(false); //envio como HTML (falso)
$Email->Subject = $email_subject;
if(!$Email->Send())
{
echo “Esse e-mail não pode ser enviado”;
echo “Erro: ” . $mail->ErrorInfo;
exit;
}
echo “Seu e-mail foi enviado, aguarde nosso contato”;
//apagar uploads
foreach($attachments as $key => $value)
{
unlink(”uploads”.”/”.$value);
}
}
?>
Algumas explicação sobre o codigo:
$name = “the Submitter”;
$email_subject = “E-mail com imagnes anexadas”;
$Email_msg =”TESTE ANEXO: \n”;
$Email_to = “seu-email@email.com”; // the one that recieves the email
$email_from = “email-usuario@email.com”;
$dir = “uploads/$filename”;
chmod(”uploads”, 0777);
$attachments = array();
function checkType(){
while(list($key,$value) = each($_FILES[images][type])){
strtolower($value);
if($value != “image/jpeg” AND $value != “image/pjpeg” AND $value != “”) {
exit(’Desculpe, formato dos arquivos é ’.($value).’ , é aceito somente imagens tipo JPEG.’) ;
}
}
checkSize();
}
while(list($key,$value) = each($_FILES[images][size])){
$maxSize = 5000000;
if(!empty($value)){
if ($value > $maxSize){
echo "Deculpe o tamanhos do(s) arquivo(s) é muito grande... o tamanho máximo suportado é $maxSize Bytes = 5MB”;
exit();
}else{
$result = “Tamanho do(s) arquivo(s) OK”;
}
...
function uploadFile(){
global $attachments;
while(list($key, $value) = each($_FILES[images][name])){
if(!empty($value)){
$filename = $value;
//the Array will be used later to attach the files and then remove them from server! array_push($attachments, $filename);
$dir = “uploads/$filename”;
chmod(”uploads”, 0777);
$success = copy($_FILES[images][tmp_name][$key], $dir);
}
}
...
$Email->Host = “localhost”;
function SendIt()
{
...
foreach($attachments as $key => $value)
{
$Email->AddAttachment(”uploads”.”/”.$value);
}
...
foreach($attachments as $key => $value){
unlink(”uploads”.”/”.$value);
}
Eli Lopes
Futuro analista de sistemas pela UNAMA - Universidade da Amazônia. Onde desenvolve projetos de pesquisa e desemvolvimento em Java/JME. Eterna orientadora: Drª Thienne Mesquita Johnson (thienne@ieee.org) Contribuição: Portal jmebrasil.org e j2me-list-subscribe@soujava.dev.java.net Centro: CC...
1 COMENTÁRIO
public function AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream')



