Pplware

PHP é à quinta-feira – Envio de Email Simples com Anexo

Boas,

A nível de direitos sobre o código, devo remeter-vos para o meu primeiro artigo desta rubrica.

Como tinha falado, cá está a função para enviar anexos num email, se necessário.

<?php

function sendEmail($name, $email, $to_mail, $subject, $msg, $attachment = “”) {

$sending = false;

if (!empty($attachment[‘tmp_name’]) && !empty($attachment[‘error’])) $attachment[‘tmp_name’] = “”;

if (!empty($name) && !empty($email) && !empty($to_mail) && !empty($subject) && !empty($msg)) {

$from_name = $name;

$from_mail = $email;

$sending = true;

}

if ($sending) {

$eol = “\n”;

$tosend[‘email’] = $to_mail;

$tosend[‘subject’] = $subject;

$tosend[‘message’] = ”

<!DOCTYPE html PUBLIC \”-//W3C//DTD XHTML 1.0 Transitional//EN\” \”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\”>

<html>

<head>

<meta http-equiv=\”Content-Type\” content=\”text/html; charset=utf-8\”>

<title>”.$subject.”</title>

</head>

<body>

“.$msg.”<br />

</body>

</html>

“.$eol.$eol;

$tosend[‘headers’] = “From: \””.$from_name.”\” <“.$from_mail.”>”.$eol;

$tosend[‘headers’] .= “Return-path: <“.$from_mail.”>”.$eol;

$tosend[‘headers’] .= “MIME-Version: 1.0”.$eol;

if (!empty($attachment[‘tmp_name’])) {

$file = $attachment[‘tmp_name’];

$content = file_get_contents($file);

$content = chunk_split(base64_encode($content));

$uid = md5(uniqid(time()));

$f_name = $attachment[‘name’];

$tosend[‘headers’] .= “Content-Type: multipart/mixed; boundary=\”PHP-mixed-“.$uid.”\””.$eol.$eol;

$tosend[‘headers’] .= “This is a multi-part message in MIME format.”.$eol;

$tosend[‘headers’] .= “–PHP-mixed-“.$uid.””.$eol;

$tosend[‘headers’] .= “Content-Type: multipart/alternative; boundary=\”PHP-alt-“.$uid.”\””.$eol.$eol;

$tosend[‘headers’] .= “–PHP-alt-“.$uid.””.$eol;

$tosend[‘headers’] .= “Content-type: text/html; charset=utf-8”.$eol;

$tosend[‘headers’] .= “Content-Transfer-Encoding: 7bit”.$eol.$eol;

$tosend[‘headers’] .= $tosend[‘message’].””.$eol.$eol;

$tosend[‘headers’] .= “–PHP-alt-“.$uid.”–“.$eol;

$tosend[‘headers’] .= “–PHP-mixed-“.$uid.””.$eol;

$tosend[‘headers’] .= “Content-Type: application/octet-stream; name=\””.$f_name.”\””.$eol; // use diff. types here

$tosend[‘headers’] .= “Content-Transfer-Encoding: base64”.$eol;

$tosend[‘headers’] .= “Content-Disposition: attachment; filename=\””.$f_name.”\””.$eol.$eol;

$tosend[‘headers’] .= $content.””.$eol.$eol;

$tosend[‘headers’] .= “–PHP-mixed-“.$uid.”–“;

$tosend[‘message’] = “”;//– The message is already in the headers.

}

if (mail($tosend[‘email’], $tosend[‘subject’], $tosend[‘message’] , $tosend[‘headers’]))

return true;

else

return false;

}//– if ($sending)

return false;

}

?>

Modo de utilização:

É bastante simples e intuitivo. Segue um exemplo com um ficheiro que acabo de submeter (não do servidor directamente):

<?php

$msg = ”

Olá, visita o <a href=”https://pplware.sapo.pt/”>https://pplware.sapo.pt/</a>!! É fantástico!!!

“;

if (sendEmail(“Nome Origem”, “email@origem.com”, “email@destino.com”, “Assunto”, $msg, $_FILES[‘ficheiro’])) {

echo “Email enviado”;

} else {

echo “Email não enviado”;

}

?>

Para qualquer dúvida ou sugestão, estão completamente à vontade.

Exit mobile version