<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Boteco Digital &#187; classe php</title>
	<atom:link href="http://www.botecodigital.info/tag/classe-php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.botecodigital.info</link>
	<description></description>
	<lastBuildDate>Thu, 26 Jan 2012 18:36:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Enviando email com PHPmailer</title>
		<link>http://www.botecodigital.info/php/enviando-email-com-phpmailer/</link>
		<comments>http://www.botecodigital.info/php/enviando-email-com-phpmailer/#comments</comments>
		<pubDate>Sat, 10 Jan 2009 13:02:22 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[classe php]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[phpmailer]]></category>

		<guid isPermaLink="false">http://192.168.0.145/wordpress/?p=30</guid>
		<description><![CDATA[O formulário de contato é uma ferramenta de comunicação de extrema importância que não pode ser tratada com desdem ao se desenvolver um site. Ela é uma das tarefas primordiais da web e devido a crescente onda de spam simplesmente deixar seu endereço de e-mail na página pode ser uma grande dor de cabeça(acreditem minha pasta spam do Gmail sabe do que fala). Veremos então como criar um pequeno formulário de contato com apenas nome, e-mail, telefone, cidade, assunto e [...]]]></description>
			<content:encoded><![CDATA[<p>O formulário de contato é uma ferramenta de comunicação de extrema importância  que não pode ser tratada com desdem ao se desenvolver um site. Ela é uma das  tarefas primordiais da <acronym title="World Wide Web">web</acronym> e devido a crescente onda de spam simplesmente  deixar seu endereço de e-mail na página pode ser uma grande dor de cabeça(acreditem  minha pasta spam do <a href="http://mail.google.com/mail/">Gmail</a> sabe do que fala).</p>
<p>Veremos então como criar um pequeno formulário de contato com apenas nome, e-mail,  telefone, cidade, assunto e mensagem. Vejamos como ficará o <acronym title="HyperText Markup Language">HTML</acronym> então:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;form action=&quot;enviar.php&quot; method=&quot;post&quot;&gt;
&lt;fieldset&gt;
        &lt;legend&gt;Formulário de Contato&lt;/legend&gt;
         &lt;label for=&quot;nome&quot;&gt;Nome&lt;/label&gt;
         &lt;input name=&quot;nome&quot; size=&quot;40&quot; type=&quot;text&quot; /&gt;
         &lt;label for=&quot;email&quot;&gt;E-mail:&lt;/label&gt;
         &lt;input name=&quot;email&quot; size=&quot;40&quot; type=&quot;text&quot; /&gt;
         &lt;label for=&quot;telefone&quot;&gt;Telefone&lt;/label&gt;
         &lt;input name=&quot;telefone&quot; size=&quot;20&quot; type=&quot;text&quot; /&gt;
         &lt;label for=&quot;assunto&quot;&gt;Assunto&lt;/label&gt;
         &lt;input name=&quot;assunto&quot; size=&quot;40&quot; type=&quot;text&quot; /&gt;
         &lt;label for=&quot;mensagem&quot;&gt;Mensagem&lt;/label&gt;
         &lt;textarea cols=&quot;40&quot; rows=&quot;4&quot; name=&quot;mensagem&quot;&gt;&lt;/textarea&gt;
         &lt;input type=&quot;submit&quot; value=&quot;Enviar&quot; /&gt;
&lt;/fieldset&gt;
&lt;/form&gt;
</pre>
<p>Para enviar este formulário iremos utilizar uma classe PHP chamada PHPmailer(<a href="http://phpmailer.sourceforge.net/" target="_blank">http://phpmailer.sourceforge.net/</a>), então antes de começarmos é bom baixa-la e descomactar-la na pasta do script.</p>
<pre class="brush: php; title: ; notranslate">
  require_once('phpmailer/class.phpmailer.php');

 $erros = &quot;&quot;;

 if(empty($_POST['nome'])){
     $erros .= &quot;O nome deve ser preenchido.&quot;;
 }

 if(empty($_POST['email']) ){
      $erros .= &quot;O E-mail deve ser preenchido.&quot;;
 }else{
      $email = $_POST['email'];
      eregi(&quot;([\._0-9A-Za-z-]+)@([0-9A-Za-z-]+)(\.[0-9A-Za-z\.]+)&quot;,$email,$match);
    if(!isset($match)){
       $erros .= &quot;O e-mail informado é inválido.&quot;;
    }
}

if(empty($_POST['mensagem'])){
    $erros .= &quot;A mensagem deve ser preenchida.&quot;;
}

if( empty($erros) ){

    $phpmail = new PHPMailer();

    $phpmail-&gt;IsSMTP(); // envia por SMTP
    $phpmail-&gt;Host = &quot;mail.xxxxxx.com&quot;; // SMTP servers
    $phpmail-&gt;SMTPAuth = true; // Caso o servidor SMTP precise de autenticação
    $phpmail-&gt;Username = &quot;xxxxxx@xxxxxx.com&quot;; // SMTP username
    $phpmail-&gt;Password = &quot;*********&quot;; // SMTP password

    $phpmail-&gt;IsHTML(true);

    $phpmail-&gt;From = $_POST['email'];
    $phpmail-&gt;FromName = $_POST['nome'];

    $phpmail-&gt;AddAddress(&quot;blogbotecodigital@gmail.com&quot;);
    $phpmail-&gt;Subject = $assunto;
    $phpmail-&gt;Body .= &quot;Nome: &quot;.$_POST['nome'].&quot;&quot;;
    $phpmail-&gt;Body .= &quot;E-mail: &quot;.$_POST['email'].&quot;&quot;;
    $phpmail-&gt;Body .= &quot;Telefone: &quot;.$_POST['telefone'].&quot;&quot;;
    $phpmail-&gt;Body .= &quot;Assunto: &quot;.$_POST['assunto'].&quot;&quot;;
    $phpmail-&gt;Body .= &quot;Mensagem: &quot;.nl2br($_POST['mensagem']).&quot;&quot;;

    $send = $phpmail-&gt;Send();

    if($send){
        echo &quot;A Mensagem foi enviada com sucesso.&quot;;
    }else{
        echo &quot;Não foi possível enviar a mensagem. Erro: &quot; .$phpmail-&gt;ErrorInfo;
    }

    }else{
        echo $erros;
    }
</pre>
<p>Vamos então commeçar a examinar o código. Na linha 1 apenas incluimos a classe PHPmailer no script. Na linha 5 testamos se a váriavel <span style="font-style: italic;">nome</span> enviada por POST pelo nosso formulário esta vazia, se sim acrescentamos uma mensagem na variável <span style="font-style: italic;">$erros</span>(linha 6).</p>
<p>Na linha 9 verficamos se o e-mail foi informado, se sim, na linha 13 utilizamos uma <a href="http://pt.wikipedia.org/wiki/Express%C3%B5es_regulares" target="_blank">expressão regular</a> para verficar se realmente foi informado um e-mail. Na linha 19 verficamos se foi enviado alguma mensagem.</p>
<p>Na linha 23 verficamos se não existe nenhuma mensagem de erro na variável <span style="font-style: italic;"> $erros</span>, se ela estiver vazia começa a brincadeira.</p>
<p>Instânciamos a classe <strong>PHPmailer</strong> na linha 25 para poder utiliza-la.</p>
<p>Na linha 27 definimos que utilizaremos o protocolo <a href="http://pt.wikipedia.org/wiki/Smtp" target="_blank"> <acronym title="Simple Mail Transfer Protocol">SMTP</acronym></a>, poderiamos ter definido a opção <span style="font-style: italic;"> $phpmail-&gt;IsMail();</span> que utilizaria ao invés do <acronym title="Simple Mail Transfer Protocol">SMTP</acronym> a função mail do <acronym title="PHP: Hypertext Preprocessor">PHP</acronym>, mas utilizar a função <span style="font-style: italic;">mail()</span> não é tão recomendada pois muitos servdores de e-mail pegam como <a href="http://pt.wikipedia.org/wiki/Spam" target="_blank">spam</a>.</p>
<p>Como estamos utilizando o <acronym title="Simple Mail Transfer Protocol">SMTP</acronym> devemos fornecer o host que enviará o email (linha 28). Na linha 29 definimos que utilizaremos autenticação para enviar o e-mail, o que também é interessante pois muitos servidores já estão utilizando este recurso para tentar diminuir o envio de spam na rede. Como definimos que iremos utilizar autenticação devemos informar o usuário e a senha, o que é feito nas linha 30 e 31.</p>
<p>Na linha 34 definimos que o e-mail será enviado em formato <acronym title="HyperText Markup Language">HTML</acronym>.</p>
<p>Nas linhas 35 e 36 definimos o e-mail e nome enviado pelo formulário como remetente da mensagem, costumo fazer isto para facilitar a resposta da mensagem.</p>
<p>Na linha 38 adicionamos o endereço do destinatário no caso nós mensmo. A classe <strong>PHPmailer</strong> também nos permite enviar uma cópia do e-mail para outro endereço <span style="font-style: italic;">$phpmail-&gt;AddCC($endereco,$nome)</span> e cópia oculta <span style="font-style: italic;"> $phpmail-&gt;AddBCC($endereco, $nome)</span>.</p>
<p>Entre as linhas 39 e 44 montamos a mensagem, sendo setado o assunto <span style="font-style: italic;">$phpmail-&gt;Subject = $assunto;</span> e montado o formulário no corpo da mensagem. Lembrando de converter as quebras de linhas <span style="font-style: italic;">\n</span> do campo mensagem para as quebra de linha em <acronym title="HyperText Markup Language">HTML</acronym>( <span style="font-style: italic;">nl2br()</span> ).</p>
<p>Na linha 46 é onde nosso e-mail é enviado(ou não?). Após esta linha apenas informamos ao usuário se a mensagem foi enviada ou não. Se não for(linha 51) mostramos o erro que ocorreu.</p>
<p>Este é apenas um pequeno exemplo do que se pode fazer com a classe <strong>PHPMailer</strong>, ela é muito mais poderosa que isto, podemos  por exemplo, enviar anexos nas mensagens.<br />
%0</p>
<div id="crp_related"><h4>Posts Relacionados:</h4><ul><li><a href="http://www.botecodigital.info/php/cakephp-%e2%80%93-validando-um-formlario-com-model-sem-controller/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/08/cakephp.png" class="crp_thumb wp-post-image" alt="CakePHP – Validando um formlário com Model sem Controller" title="CakePHP – Validando um formlário com Model sem Controller" /></a> <a href="http://www.botecodigital.info/php/cakephp-%e2%80%93-validando-um-formlario-com-model-sem-controller/" rel="bookmark" class="crp_title">CakePHP – Validando um formlário com Model sem Controller</a></li><li><a href="http://www.botecodigital.info/php/xml-nem-tudo-deve-ir-para-o-banco-de-dados/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/04/php.png" class="crp_thumb wp-post-image" alt="XML nem tudo deve ir para o banco de dados" title="XML nem tudo deve ir para o banco de dados" /></a> <a href="http://www.botecodigital.info/php/xml-nem-tudo-deve-ir-para-o-banco-de-dados/" rel="bookmark" class="crp_title">XML nem tudo deve ir para o banco de dados</a></li><li><a href="http://www.botecodigital.info/jquery/validando-formularios-com-jquery-plugin-validation/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Validando formulários com JQuery-Plugin-Validation" title="Validando formulários com JQuery-Plugin-Validation" /></a> <a href="http://www.botecodigital.info/jquery/validando-formularios-com-jquery-plugin-validation/" rel="bookmark" class="crp_title">Validando formulários com JQuery-Plugin-Validation</a></li><li><a href="http://www.botecodigital.info/css/css-sprite/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2009/01/css.png" class="crp_thumb wp-post-image" alt="CSS Sprite" title="CSS Sprite" /></a> <a href="http://www.botecodigital.info/css/css-sprite/" rel="bookmark" class="crp_title">CSS Sprite</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/php/enviando-email-com-phpmailer/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
	</channel>
</rss>

