Formulário "Fale Conosco" em HTML/PHP autenticado no SMTP Server

Como a maioria dos servidores SMTP está migrando a porta de envio padrão 25 para 587, eu necessitava de um
Script que, além de fornecer a autenticação no Servidor para o envio do e-mail ser garantido, ele também tinha que
conectar-se na porta correta.

[ Hits: 121.395 ]

Por: clayton Barbosa Cézar em 16/05/2012 | Blog: http://www.cryptmedia.net


Criando o 'form' em HTML



Primeiro de tudo, você deve criar o formulário em seu site, adicionando o código abaixo, ou pode simplesmente copiar e colar no seu editor de textos e salvar o arquivo com extensão ".htm", para estudo:

<form id="f20" action="formail.php" method="post" onsubmit="return weCheckForm(this)"> <fieldset id="e20" class="cc02"> <legend id="e19" class="cc03"> Fale Conosco <input type="hidden" name="emaildest" value="critpmedia@criptmedia.net"> </legend><br> <label id="e18" class="cc04" for="e17"> Empresa </label> <input name="company" type="text" class="cc05" id="e17" title="Nome da Empresa" size="23" maxlength="30"><br> <label id="e16" class="cc04" for="e15"> Seu Nome </label> <input name="nome" type="text" class="cc05" id="e15" title="Seu nome" size="23" maxlength="30"><br> <label id="e14" class="cc04" for="e13"> Cidade </label> <input name="cidade" type="text" class="cc05" id="e13" title="Cidade" size="23" maxlength="30"><br> <label id="e12" class="cc04" for="e11"> Estado </label> <input name="estado" type="text" class="cc05" id="e11" title="Estado" size="23" maxlength="2"><br> <label id="e10" class="cc04" for="e9"> Telefone </label> <input name="telefone" type="text" class="cc05" id="e9" title="Telefone" size="23" maxlength="11" onkeypress="return numeros(event.keyCode, event.which);"><br> <label id="e8" class="cc04" for="e7"> Email </label> <input name="email" type="text" class="cc05" id="e7" title="Seu Email" size="23" maxlength="50"><br> <label id="e6" class="cc04" for="e5"> País </label> <select id="e5" class="cc06" size="1" name="Country" title="Country"> <option> Afghanistan</option> <option> Albania</option> <option> Algeria</option> <option> American Samoa</option> <option> Andorra</option> <option> Angola</option> <option> Anguilla</option> <option> Antarctica</option> <option> Antigua and Barbuda</option> <option> Argentina</option> <option> Armenia</option> <option> Aruba</option> <option> Australia</option> <option> Austria</option> <option> Azerbaijan</option> <option> Bahamas</option> <option> Bahrain</option> <option> Bangladesh</option> <option> Barbados</option> <option> Belarus</option> <option> Belgium</option> <option> Belize</option> <option> Benin</option> <option> Bermuda</option> <option> Bhutan</option> <option> Bolivia</option> <option> Bosnia</option> <option> Botswana</option> <option> Bouvet Island</option> <option selected="selected">Brazil</option> <option> Brunei Darussalam</option> <option> Bulgaria</option> <option> Burkina Faso</option> <option> Burundi</option> <option> Cambodia</option> <option> Cameroon</option> <option> Canada</option> <option> Caicos Islands</option> <option> Cape Verde</option> <option> Cayman Islands</option> <option> Central African Rep.</option> <option> Chad</option> <option> Chile</option> <option> China</option> <option> Christmas Island</option> <option> Cocos Islands</option> <option> Colombia</option> <option> Comoros</option> <option> Congo</option> <option> Cook Islands</option> <option> Costa Rica</option> <option> Cote D'Ivoire</option> <option> Croatia</option> <option> Cuba</option> <option> Cyprus</option> <option> Czech Republic</option> <option> Czechoslovakia</option> <option> Denmark</option> <option> Djibouti</option> <option> Dominica</option> <option> Dominican Republic</option> <option> East Timor</option> <option> Ecuador</option> <option> Egypt</option> <option> El Salvador</option> <option> Equatorial Guinea</option> <option> Eritrea</option> <option> Estonia</option> <option> Ethiopia</option> <option> Falkland Islands</option> <option> Faroe Islands</option> <option> Fiji</option> <option> Finland</option> <option> France</option> <option> French Guiana</option> <option> French Polynesia</option> <option> French Sth Ter.</option> <option> Gabon</option> <option> Gambia</option> <option> Georgia</option> <option> Germany</option> <option> Ghana</option> <option> Gibraltar</option> <option> Great Britain (UK)</option> <option> Greece</option> <option> Greenland</option> <option> Grenada</option> <option> Guadeloupe</option> <option> Guam</option> <option> Guatemala</option> <option> Guinea</option> <option> Guinea-Bissau</option> <option> Guyana</option> <option> Haiti</option> <option> Honduras</option> <option> Hong Kong</option> <option> Hungary</option> <option> Iceland</option> <option> India</option> <option> Indonesia</option> <option> Iran</option> <option> Iraq</option> <option> Ireland</option> <option> Israel</option> <option> Italy</option> <option> Jamaica</option> <option> Japan</option> <option> Jordan</option> <option> Kazakhstan</option> <option> Kenya</option> <option> Kiribati</option> <option> Korea (North)</option> <option> Korea (South)</option> <option> Kuwait</option> <option> Kyrgyzstan</option> <option> Laos</option> <option> Latvia</option> <option> Lebanon</option> <option> Lesotho</option> <option> Liberia</option> <option> Libya</option> <option> Liechtenstein</option> <option> Lithuania</option> <option> Luxembourg</option> <option> Macau</option> <option> Macedonia</option> <option> Madagascar</option> <option> Malawi</option> <option> Malaysia</option> <option> Maldives</option> <option> Mali</option> <option> Malta</option> <option> Marshall Islands</option> <option> Martinique</option> <option> Mauritania</option> <option> Mauritius</option> <option> Mayotte</option> <option> Mexico</option> <option> Micronesia</option> <option> Moldova</option> <option> Monaco</option> <option> Mongolia</option> <option> Montserrat</option> <option> Morocco</option> <option> Mozambique</option> <option> Myanmar</option> <option> Namibia</option> <option> Nauru</option> <option> Nepal</option> <option> Netherlands</option> <option> Netherlands Antilles</option> <option> New Caledonia</option> <option> New Zealand</option> <option> Nicaragua</option> <option> Niger</option> <option> Nigeria</option> <option> Niue</option> <option> Norfolk Island</option> <option> Norway</option> <option> Oman</option> <option> Pakistan</option> <option> Palau</option> <option> Panama</option> <option> Papua New Guinea</option> <option> Paraguay</option> <option> Peru</option> <option> Philippines</option> <option> Pitcairn</option> <option> Poland</option> <option> Portugal</option> <option> Puerto Rico</option> <option> Qatar</option> <option> Reunion</option> <option> Romania</option> <option> Russian Federation</option> <option> Rwanda</option> <option> Saint Kitts - Nevis</option> <option> Saint Lucia</option> <option> Samoa</option> <option> San Marino</option> <option> Sao Tome - Principe</option> <option> Saudi Arabia</option> <option> Senegal</option> <option> Seychelles</option> <option> Sierra Leone</option> <option> Singapore</option> <option> Slovak Republic</option> <option> Slovenia</option> <option> Solomon Islands</option> <option> Somalia</option> <option> South Africa</option> <option> Spain</option> <option> Sri Lanka</option> <option> St. Helena</option> <option> St. Pierre</option> <option> Sudan</option> <option> Suriname</option> <option> Svalbard</option> <option> Swaziland</option> <option> Sweden</option> <option> Switzerland</option> <option> Syria</option> <option> Taiwan</option> <option> Tajikistan</option> <option> Tanzania</option> <option> Thailand</option> <option> Togo</option> <option> Tokelau</option> <option> Tonga</option> <option> Tobago</option> <option> Trinidad</option> <option> Tunisia</option> <option> Turkey</option> <option> Turkmenistan</option> <option> Turks</option> <option> Tugalu</option> <option> Uganda</option> <option> Ukraine</option> <option> United Arab Emirates</option> <option> United Kingdom</option> <option> United States</option> <option> Uruguay</option> <option> USSR (former)</option> <option> Uzbekistan</option> <option> Vanuatu</option> <option> Vatican City State</option> <option> Venezuela</option> <option> Vietnam</option> <option> Virgin Islands (G.B.)</option> <option> Virgin Islands (U.S.)</option> <option> Wallis and Futuna Is.</option> <option> Western Sahara</option> <option> Yemen</option> <option> Yugoslavia</option> <option> Zaire</option> <option> Zambia</option> <option> Zimbabwe</option> </select><br> <label id="e4" class="cc03"> Mensagem </label><br> <textarea id="e3" class="cc05" name="mensagem" title="Mensagem" rows="2" cols="29" onFocus="this.value='';"> Digite aqui a sua mensagem... </textarea><br> <input id="e2" class="cc06" type="submit" title="Send Details" value="Enviar"> <input id="e1" class="cc06" type="reset" title="Clear Details" value="Apagar"> </fieldset> </form>


Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Criando o 'form' em HTML
   3. Criando os arquivos PHP 1
   4. Criando os arquivos PHP 2
   5. Criando os arquivos PHP 3
   6. Criando os arquivos PHP 4
   7. Criando os arquivos PHP 5
   8. Arquivo INI - Conclusão
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Lighttpd + SQLite + PHP

Podcast Generator - Guia de instalação e primeiro acesso

Instalando o phpBB num servidor Web

Boleto Bancário em PHP ou ASP

Easy Gallery - Componente Joomla

  
Comentários
[1] Comentário enviado por josef em 17/05/2012 - 16:13h

Caracas, que trabalho legal, vou testar, grato por compartilhar.

[2] Comentário enviado por stremer em 18/05/2012 - 11:36h

Amigo... estes fontes são realmente bons e podem ser uteis em diversos casos!

Mas se o seu problema era apenas enviar e-mail, não seria mais facil usar a função pronta do php chamada mail.

Um simples search no google:
http://www.codigofonte.net/dicas/php/175_enviando-email-pelo-php-com-o-mail

Esse monte de arquivo php poderia ser troca por somente um com:
<?
mail("ze@criarweb.com,maria@criarweb.com","assunto","Este é o corpo da mensagem")
?>

Abs

[3] Comentário enviado por claycezar em 18/05/2012 - 17:08h

Olá Stremer,

O problema era enviar email usando autenticação e pela porta 587 do servidor, verificar e validar os dados do formulário para envio, apresentar mensagens de erro do servidor para o usuário quando não fosse possivel enviar por que o servidor não respondeu ou algo erro aconteceu. Por isto usei este monte de arquivos, mas se tiver uma maneira mais simples de fazer o que esses arquivos fazem com menos linhas seria uma boa.

[4] Comentário enviado por adfs03 em 08/06/2012 - 23:59h

Ola claycezar ...

Eu fiz exatamente o que você explicou no tutorial....sou "dummie" em PHP....estou testando o form, com o EasyPHP, e na execução ele informa o seguinte erro....

"Parse error: syntax error, unexpected T_VARIABLE in C:\Program Files (x86)\EasyPHP-5.3.9\www\Contato\config.ini on line 9"

Você pode me ajudar?

Obrigado.

Alexandre.

[5] Comentário enviado por claycezar em 09/06/2012 - 06:44h

Bom dia,

adsf03 pode comentar a linha com a variavel $emaildest do arquivo .ini ou apaga-la, já que o formail recebe o endereço do seu email pela variavel $seu_email no arquivo "alterar_esse_arquivo.php". Eu acabei esquecendo de apagar essa linha que está com uma variavel sem mais utilidade. A unica variavel que é preciso conservar no arquivo config.ini é $certo="1"; (para enviar emails) OU $certo="0"; (para nao enviar) e mais nada.

[6] Comentário enviado por gsevilhajr em 21/06/2012 - 11:17h

Bom dia, claycezar.

Eu copiei tudo certinho mas esta dando este erro:


Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/sevilhac/public_html/teste_formmail/formail.php:2) in /home/sevilhac/public_html/teste_formmail/formail.php on line 13

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/sevilhac/public_html/teste_formmail/formail.php:2) in /home/sevilhac/public_html/teste_formmail/formail.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at /home/sevilhac/public_html/teste_formmail/formail.php:2) in /home/sevilhac/public_html/teste_formmail/formail.php on line 14


Poderia me ajudar?
Obrigado.

[7] Comentário enviado por claycezar em 22/06/2012 - 00:41h

Olá gsevilhajr,

Dá uma olhada se na hora de copiar foi colado o codigo corretamente respeitando os "<?php e ?>", elimine espaços e linhas em branco, se continuar o erro, mude a codificação do arquivo que você gerou como formail.php para UTF8. (abra ele no bloco de notas mesmo, e mude a codicação usando o "salvar como..").

[8] Comentário enviado por janaraujo em 11/06/2013 - 17:57h

Caramba!!!!!! Até que enfim funcionou!!! Muito obrigado amigo. pesquisei varios sites e nenhum tinha funcionado até agora. Muito obrigado mesmo. Aqui rodou na boa!!!!

[9] Comentário enviado por scooter em 07/09/2013 - 05:10h

Poderia me ajudar no formulário esta apresentado o seguinte erro.

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/u936331729/public_html/class.phpmailer.php on line 1421


linha 1421
if(!isset($_SERVER['REMOTE_ADDR']))

[10] Comentário enviado por shindo em 29/10/2013 - 13:46h

Boa tarde, primeiramente obrigado pelo formulário, aqui está ocorrendo o seguinte erro:

Warning: addcslashes() [function.addcslashes]: Invalid '..'-range, '..'-range needs to be incrementing in /var/www/html/rptinfo.com.br/web/class.phpmailer.php on line 1144
Ocorreram erros ao enviar email

não sei como posso corrigir, alguma idéia? desde já obrigado.

[11] Comentário enviado por devstar em 24/09/2018 - 11:06h

Eu recomendo que você siga este tutorial aqui no formulário de contato php (https://www.cloudways.com/blog/custom-php-mysql-contact-form/) para criar seu próprio formulário em html, php e mysql. Este formulário também tem um script de validação, para que você não receba e-mails ou spams inválidos.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts