PHP é à quinta-feira – Envio de Email Simples
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="https://pplware.sapo.pt/">https://pplware.sapo.pt/</a>!! É fantástico!!! "; sendEmail("Nome Origem", "email@origem.com", "email@destino.com", "Assunto", $msg); ?>
Qualquer dúvida ou sugestão, estão completamente à vontade.
Este artigo tem mais de um ano
alguém sabe como é que se envia emails por smtp?
Muito boa dica!!! Simples e útil…
Abraço,
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
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.
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
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.
@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.
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!
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…
“<?php
$msg = ”
Olá, visita o https://pplware.sapo.pt/!! É 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 https://pplware.sapo.pt/!! É fantástico!!!
“;
sendEmail(“Nome Origem”, “email@origem.com”, “email@destino.com”, “Assunto”, $msg);
?>
o comentário não apareceu bem…
pensava que não dava para inserir html…
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
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.
Valeu Bruno, alto nivel …
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 😉
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!
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.
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. 😉
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?
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?
Não.
Em windows não sei, mas em linux basta teres o sendmail que funciona.
ta obrigado!!
Sem ofensa mas n percebi nada.
Agradecia que me enviassem um mail para ajudar!
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;
(…)
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.
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.
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.