PHP é à quinta-feira – Envio de Email Simples

27 Comentários

Boas,

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

Hoje trago-vos uma função de envio de email simples, em html. Para a semana apresento uma mais complexa, com possibilidade de anexar um ficheiro.

<?php

function sendEmail($name, $email, $to_mail, $subject, $msg) {
$sending = false;
$eol = "\n";
$tosend = array();

if (!empty($name) && !empty($email) && !empty($to_mail) && !empty($subject) && !empty($msg)) {
$from_name = $name;
$from_mail = $email;
$sending = true;
}

if ($sending) {
$tosend['email'] = $to_mail;
$tosend['subject'] = $subject;

$tosend['headers'] = "From: \"".$from_name."\" <".$from_mail.">".$eol;
$tosend['headers'] .= "Content-type: text/html; charset=iso-8859-1".$eol;
$tosend['message'] = "
<html>
<head>
<title>".$subject."</title>
</head>
<body>
<br />
".$msg."
<br />
</body>
</html>".$eol.$eol;

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:

<?php

$msg = "
Olá, visita o <a href="http://www.pplware.com/">http://www.pplware.com/</a>!! É fantástico!!!
";
sendEmail("Nome Origem", "email@origem.com", "email@destino.com", "Assunto", $msg);

?>

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

Comentários

27

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de pedro
    pedro

    alguém sabe como é que se envia emails por smtp?

  2. Avatar de BESTCINE
    BESTCINE

    Muito boa dica!!! Simples e útil…

    Abraço,

  3. Avatar de Redin

    Aproveitando o facto de se estar a falar de programação e de correio electronico, dou conhecimento que hoje chegou ao meu correio a confirmação do deferimento ao meu plano “Anti-SPAm” que remeti ao IGAC.
    A dita publicação tem direitos de autor assim como o conceito e ideia que permite criar uma ferramenta destinada aos ISP’s e clientes de forma a combater a quem a usar 100% de todo o SPAM q

    1. Avatar de Redin

      Desculpem a semi-duplicação do meu comentário. Carreguei no Enter sem querer e já foi tarde para interromper. O comentário inteiro segue mais abaixo.
      Obrigado.

  4. Avatar de Redin

    Aproveitando o facto de se estar a falar de programação e de correio electrónico, dou conhecimento que hoje chegou ao meu correio a confirmação do deferimento ao meu plano “Anti-SPAm” que remeti ao IGAC.
    Título : SPAM – O Fim
    Nº de registo IGAC :
    Requerente : 1704/2009

    A dita publicação tem direitos de autor assim como o conceito e ideia que permite criar uma ferramenta destinada aos ISP’s e clientes de forma a combater a quem a usar, 100% de todo o SPAM que circula pela rede.
    Ou seja, o meu projecto implementa uma forma de eliminar o SPAM a partir do remetente sem que o mesmo chegue ao destinatário nem tão pouco a passar na rede.
    Algumas sugestões serão bem vindas.
    Obrigado
    Redin

    1. Avatar de Yuy
      Yuy

      Envias-te um plano para combater o SPAM para o IGAC.. looooooool essa anedota está boa!

      Aposto que o IGAC vai, vai… vai nada, que o IGAC não tem nada a haver com o SPAM… lol

      Sei lá: Assembleia da República, FCCN, Anacom… ainda vai… agora para o IGAC, essa é para rir.

      Se a tua ideia for tão boa como a ideia de a enviar para o IGAC então podes enviá-la directamente para o caixote do lixo.

      1. Avatar de Redin

        @Yuy
        Normalmente e por hábito nunca poderei sequer em pensar em ser “malcriado” na resposta a um comentário, mas desta vez obrigas-me a dizer que tu “és burro que nem uma porta”.
        e volto a repetir.
        ÉS BURRO QUE NEM UMA PORTA

        Mas eu vou fazer-te um desenho.
        Por acaso sabes o que é o IGAC?
        “Inspecção geral das actividades culturais” e por muito que se queira registar uma ideia, ela terá de ser feita através da publicação transcrita para uma obra. É como se de uma patente se registasse. E a única entidade é a IGAC e se fosse musica, opera, cinema teria de ser a SPA.
        Mas se o teu objectivo foi o de me irritares conseguiste, porque julgava eu que a comunidade pplware não estivesse minada com tipos como tu.
        Faz-me um favor.
        Pondera as tuas palavras e as tuas emoções antes de dizeres tamanhos disparates.

        1. Avatar de Yuy
          Yuy

          ahahahah

          volto-me a rir! no IGAC… pois deve ser deve… se é uma ideia, deves querer é registar a patente da ideia, logo não é no IGAC, a menos que quisesses apoio para o teu filme talvez… de resto as ideias registam-se no INPI – Instituto Nacional da Propriedade Industrial: http://www.marcasepatentes.pt ok? tá bom? Agradecido!

      2. Avatar de Alexandre Pinto
        Alexandre Pinto

        Sebes que se nao tens nada para ajudar nao fales. Realmente nao tens razao nenhuma no que dizes. Não conheço detalhes do projecto mas de qq das formas está a fazer qq coisa. E tu? Fazes comentarios despropositados e mal criados… Bem que podias estar calado…

  5. Avatar de naice
    naice

    “<?php

    $msg = ”
    Olá, visita o http://www.pplware.com/!! É fantástico!!!
    “;
    sendEmail(“Nome Origem”, “email@origem.com”, “email@destino.com”, “Assunto”, $msg);

    ?>”

    onde esta a parte acima transcrita penso que seja isto que queres dizer:

    <?php

    $msg = ”
    Olá, visita o http://www.pplware.com/!! É fantástico!!!
    “;
    sendEmail(“Nome Origem”, “email@origem.com”, “email@destino.com”, “Assunto”, $msg);

    ?>

    1. Avatar de naice
      naice

      o comentário não apareceu bem…
      pensava que não dava para inserir html…

  6. Avatar de NelsonJSDuarte
    NelsonJSDuarte

    Penso que a utilização de livravias é bem melhor, porque esta função nativa do php, não permite, por exemplo:
    o envio de anexos
    configuração do servidor
    etc…

    Mas continuem o bom trabalho

    1. Avatar de Rui

      Bom dia a todo(a)s,

      A função mail nao tem nenhum parâmetro para envio de anexos, mas podes sempre adicionar os anexos nos headerse garanto-te que vão anexados.

      Se precisares do codigo avisa, que te mando isso.

  7. Avatar de carlos rajas
    carlos rajas

    Valeu Bruno, alto nivel …

  8. Avatar de Luis
    Luis

    Pessoalmente, gosto mais do uso da biblioteca PHPMailer (disponível aqui: http://sourceforge.net/projects/phpmailer ). Permite enviar anexos, enviar emails para vários destinatários ao mesmo tempo, também através de CC e BCC e funciona também a partir de SMTP.

    De qualquer forma, parabéns Bruno Bernardino pela dica 😉

  9. Avatar de Bruno Bernardino

    Obrigado a todos pelo apoio.

    Como referi no artigo, esta é uma função simples, pois se há coisa de que sou apologista é eliminar código desnecessário.

    Emails com anexos ficam para a semana.

    Obviamente que podem utilizar livrarias existentes, etc. e a PHPMailer é boa, mas nem sempre é necessária uma classe que faz tanta coisa.

    Quanto à ideia do Redin, ele já falou comigo e sabe que apesar da ideia dele me parecer um pouco utópica e de difícil concretização, é boa. Boa sorte!

    1. Avatar de Redin

      Olá Bruno.
      Nem fazia ideia que eras o mesmo com quem eu já tinha discutido este assunto por via de outros canais.
      Posso desde já adiantar que o conceito à volta do plano que inicialmente tracei contigo está agora muito diferente dos principios básicos indicados.
      Agora está muito mais simples e fácil de concretizar e a sensação de “utopia” desaparece.
      Irei procurar entrar de novo contigo pelos canais atrás referidos para te pôr ao corrente do conceito modificado.
      Pena foi que nunca mais te me contactasses no seguimento da nosso conversa que ficou a meio.
      Tenciono assim, (visto que o plano já está registado) enviar um excerto da cópia da minha obra/ideia.
      Cumprimentos e obrigado pela resposta.

  10. Avatar de Tiago Carvalho
    Tiago Carvalho

    Bruno Bernardino, obrigado por mais um artigo. Acredita que valorizo e respeito o teu trabalho mas… por favor.. Esta função não faz nada de interessante. Definir headers?! :\

    Mais valia um artigo com a explicação de todos os headers que se podem usar no envio de um email.

    Nao leves esta critica no mau sentido. Mas não me podia calar. 😉

  11. Avatar de sampaio
    sampaio

    para meter este codigo a funcionar e preciso ter um servidor stmp,nao é? por exemplo se tiver a usar o xampp ou o easyphp, nao da para enviar o email,pois nao?

  12. Avatar de sampaio
    sampaio

    para meter este codigo a funcionar e preciso ter um servidor smtp,nao é? por exemplo se tiver a usar o xampp ou o easyphp, nao da para enviar o email,pois nao?

    1. Avatar de Bruno Bernardino

      Não.

      Em windows não sei, mas em linux basta teres o sendmail que funciona.

      1. Avatar de sampaio
        sampaio

        ta obrigado!!

  13. Avatar de Fred
    Fred

    Sem ofensa mas n percebi nada.
    Agradecia que me enviassem um mail para ajudar!

  14. Avatar de Tiago Coelho
    Tiago Coelho

    Sou novo nestas andanças, ha alguem que me consegue ajudar a resolver esta situação???

    Warning: mail() [function.mail]: SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. 5sm6005985eyf.48 in C:\wamp\www\SendEmail\index.php on line 32

    na linha 32 está o seguinte codigo:

    (…)
    if (mail($tosend[‘email’], $tosend[‘subject’], $tosend[‘message’] , $tosend[‘headers’]))
    return true;
    (…)

    1. Avatar de Bruno Bernardino

      Olá novamente Tiago,

      Isso quer dizer que o teu servidor SMTP só aceita ligações com TLS pelo menos, e pelos vistos tal não está configurado no teu PHP.

      Como já referi, coloca estas tuas dúvidas no Fórum, aqui não é o local indicado.

  15. Avatar de Felipe
    Felipe

    Boa noite. Acho bastante interessante o seu site o acompanho diariamente e gostaria de deixar um ponto como dica. Você poderia colocar comentários nos códigos, facilita para as pessoas (pra mim mesmo) que possam estar com dúvidas em algumas coisa.

    Parabéns pelo site, um abraço.

    Felipe.

  16. Avatar de replica watches

    Thank you for another great blog. Where else could anyone get that kind of info written in such an incite full way? I have a project that I am presently working on, and I have been on the look out for such information.