Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Matias Rezende

Formulário de Contato com múltiplos destinatários

Recommended Posts

eu não estou programando meu site em php, eu posso utilizar esse seu formulário só numa pagina onde vai ter o meu formulário?

outra coisa, aquela parte onde eu coloco meu nome do gmail e a minha senha, tem como usar sem ter q colocar a senha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu não estou programando meu site em php, eu posso utilizar esse seu formulário só numa pagina onde vai ter o meu formulário?

 

Pode, desde que o servidor onde o site estiver hospedado tenha suporte a PHP.

 

outra coisa, aquela parte onde eu coloco meu nome do gmail e a minha senha, tem como usar sem ter q colocar a senha?

 

Aí depende. Se você não colocar usuário e senha, não vai ser autenticado. Agora, se quiser enviar e-mail autenticado pelo Gmail, aí tem que colocar usuário e senha mesmo.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem como você ensinar a tirar essa linha da verificação?

 

outra coisa... hj eu utilizo um formulario simples numa pagina em html, uma segunda página em php (que é executada qdo o cara envia o formulario) com os comandos e uma terceira em html q é aquela q diz q o formulario foi enviado corretamente..

 

no seu formulario tem como eu fazer dessa maneira? pq pra eu adequar o meu site dentro da sua pagina php acho q vai ficar meio dificil...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então. Pra tirar a autenticação, você tira as seguintes linhas

       //Definimos que é SMTP
       $mail->IsSMTP();
       // habilitamos autenticação SMTP
       $mail->SMTPAuth = true;
       // seta o prefixo ssl
       $mail->SMTPSecure = 'ssl';
       // seta o Gmail como servidor SMTP                 
       $mail->Host = 'smtp.gmail.com';
       // seta a porta SMTP
       $mail->Port = 465;
       // Nome de usuário do Gmail
       $mail->Username = $username;
       // Senha do usuário do Gmail
       $mail->Password = $password;

 

Sobre a questão de adequar, não acredito que você vai ter problemas, porque aqui fica tudo em um arquivo só. Se tentar e não conseguir, posta uma dúvida no fórum principal que o pessoal te ajuda.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola Matias Rezende

 

usei seu script, para fazer um teste. e esta dano erro

 

"Foram encontrados erros no preenchimento do formul�rio"

 

mais que erros é esse, preenchi os formulario dessa forma

 

Nome = 11closed

E-mail = 11closed@IIclosed.com

Telefone = 223232324343

destinatário = selecionei os tres

Assunto = manda Email

Mensagem = mandar Email, mandar Email, mandar Email, mandar Email, mandar Email, mandar Email, mandar Email, mandar Email, mandar Email, mandar Email, mandar Email, mandar Email, mandar Email.

 

pq esta dano esse erro

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

apareceu essa

 

"aq deu erro"

 

que esta no codigo...

 

// Usuário do gmail
 $username = [email=""]'meuEmail@gmail.com'[/email];
// Senha do usuário do Gmail
 $password = 'minhasenha';
// E-mail que vai aparecer como remetente
 $from = [email=""]'meuEmail@gmail.com'[/email];
// Nome que vai aparecer como remetente
 $fromName = '11closed'; 
/** * Início da validação. Estamos validando somente se está setado e escapando aspas. 
* Faremos a mesma coisa para todos os campos. *  */
 $erro = 'aq deu erro'; // aqui o erro
// Testamos se o formulário foi enviado. Necessário para que não exiba mensagem de erro no primeiro

apareceu dessa forma

 

Foram encontrados erros no preenchimento do formul�rio

aq deu erro

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe se a pergunta é muito ignorante mas...

como faço para habilitar extensão OpenSSL no meu phpMyAdmin?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A extensão OpenSSL é uma extensão do PHP, e não do PHPMyAdmin. Neste caso, é melhor criar um tópico no fórum principal com esta dúvida.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde!

 

Sou nova em php e quando tento usar o código do formulário, recebo a seguinte mensagem:

 

Fatal error: Class 'PHPMailer' not found in /home/pafich/public_html/kontakt.php on line 161

 

Na linha 161 é exatamente onde acontece a instanciação da classe.

 

A pasta phpmailer está lá e no mesmo nível da página...

 

O que pode estar acontecendo?

 

Peguei as suas dicas neste tópico, mas mesmo assim nao funcionou... :-/

 

Outra dúvida. A porta SMTP deve ser fornecida pelo servidor?

 

Obrigada!

 

 

Segue o meu código, se alguém puder dar uma olhada:

 

<?php
/**
 * Exemplo de envio autenticado com PhpMailer, utilizando o Gmail, para múltiplos destinatários
 * 
 * Coloque no value de cada checkbox o e-mail a ser enviado.
 * 
 * Neste exemplo, usamos os seguintes e-mails
 * - rh@site.com.br
 * - adm@site.com.br
 * - financeiro@site.com.br
 * 
 * Para que seja possível enviar, tenha certeza que a extensão php_openssl.dll esteja descomentada
 * no seu PHP.INI
 * 
 * @author MatiasRezende
 * @version 1.0
 * @since 2009-09-17
 */

/**
 * Aqui testamos se a extensão openssl foi carregada, pois ela é necessária para o envio.
 * Caso ela não tenha sido carregada, ou seja, não esteja habilitada, vai encerrar o processamento.
 */ 
if(!extension_loaded('openssl'))
{
	die('A  extensão OpenSSL não está habilitada no seu PHP.INI. Habilite-a e tente novamente.');
}


// adicione os emails a serem utilizados 
$destinos = array(
		'Recursos Humanos' => 'rh@site.com.br',
		'Financeiro'       => 'financeiro@site.com.br',
		'Administração'    => 'adm@site.com.br',
        );
	
// Usuário do gmail
$username = 'seuemail@gmail.com';
// Senha do usuário do Gmail
$password = 'suasenha';
// E-mail que vai aparecer como remetente
$from = 'SeuEmail@site.com.br';
// Nome que vai aparecer como remetente
$fromName = 'Seu Nome'; 

/**
 * Início da validação. Estamos validando somente se está setado e escapando aspas.
 * Faremos a mesma coisa para todos os campos.
 * 
 */

$erro = '';
// Testamos se o formulário foi enviado. Necessário para que não exiba mensagem de erro no primeiro
// acesso 
if(isset($_POST['enviar']))
{
	// Setamos $gpc como get_magic_quotes_gpc. Se existir, terá valor true. Caso contrário, será false
	$gpc = get_magic_quotes_gpc();
	
		// Validação campo Destinatário
	if(isset($_POST['Destinatario']) && !empty($_POST['Destinatario']))
	{
		// Aqui estamos verificando se não está habilitado magic_quotes_gpc, escapa as aspas simples com addslashes.
		foreach ($_POST['Destinatario'] as $valor)
		{
			// Aqui adicionamos o radical do e-mail.
			$destinatario[] = ($gpc) ? $valor : addslashes($valor);
		} 
	}
	else 
	{
		$erro .= '- Wählen Sie mindestens ein Empfänger aus<br/>';   
	}
	
	// Validação campo Nome
	if(isset($_POST['Nome']) && !empty($_POST['Nome']))
	{
		// Aqui estamos verificando se não está habilitado magic_quotes_gpc, escapa as aspas simples com addslashes.
		$nome = ($gpc) ? $_POST['Nome'] : addslashes($_POST['Nome']); 
	}
	else 
	{
		$erro .= '- Geben Sie Ihren Namen ein<br/>';   
	}
	
	// Validação campo E-mail. Validamos também o formato, usando expressão regular
	if(isset($_POST['E-mail']) && !empty($_POST['E-mail']))
	{
		// Aqui estamos verificando se não está habilitado magic_quotes_gpc, escapa as aspas simples com addslashes.
		$email = ($gpc) ? $_POST['E-mail'] : addslashes($_POST['E-mail']);
		
		// Aqui validamos se o e-mail é válido, utilizando expressão regular.
		if (!preg_match ('/^[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*\\.[A-Za-z0-9]{2,4}$/', $email))
		{
			$erro .= '- Ungültige e-Mail Adresse<br/>';
		}
	}
	else 
	{
		$erro .= '- Geben Sie Ihre e-Mail Adresse ein<br/>';   
	}
	
	// Validação campo Telefone. Como ele não é obrigatório, tiramos o else, que exibe mensagem de erro caso não esteja preenchido
	if(isset($_POST['Telefone']) && !empty($_POST['Telefone']))
	{
		// Aqui estamos verificando se não está habilitado magic_quotes_gpc, escapa as aspas simples com addslashes.
		$telefone = ($gpc) ? $_POST['Telefone'] : addslashes($_POST['Telefone']); 
	}
	
	/* Validação campo Assunto
	if(isset($_POST['Assunto']) && !empty($_POST['Assunto']))
	{
		// Aqui estamos verificando se não está habilitado magic_quotes_gpc, escapa as aspas simples com addslashes.
		$assunto = ($gpc) ? $_POST['Assunto'] : addslashes($_POST['Assunto']); 
	}
	else 
	{
		$erro .= '- Preencha o Assunto.<br/>';   
	}*/
	
	// Validação campo Mensagem
	if(isset($_POST['Mensagem']) && !empty($_POST['Mensagem']))
	{
		// Aqui estamos verificando se não está habilitado magic_quotes_gpc, escapa as aspas simples com addslashes.
		// Adicionamos também a função que troca nova linha por <br/>
		$mensagem = ($gpc) ? nl2br($_POST['Mensagem']) : addslashes(nl2br($_POST['Nome'])); 
	}
	else 
	{
		$erro .= '- Geben Sie eine Nachricht ein<br/>';   
	}
}

/**
 * Aqui testamos se o formulário foi enviado e se não existe erro nele.
 * Caso seja válido, entramos na rotina de enviar o e-mail
 */
if(isset($_POST['enviar']) && empty($erro))
{
	// aqui incluímos a pasta onde está a classe PhpMailer no include_path
	//set_include_path('PHPMailer'. PATH_SEPARATOR .get_include_path());
	
	// incluímos a classe phpmailer. Não utilizamos a pasta onde ela está porque já incluímos anteriormente
	include 'PHPMailer/class.phpmailer.php';
	
	/**
	 * Aqui definimos o corpo do e-mail.
	 */
	$conteudo = '
	<html>
	<body>
	<h1>Contato enviado pelo site</h1>
	<b>Nome</b> - '.$nome.'<br/>
	<b>E-mail</b> - '.$email.'<br/>';
	if(isset($telefone)) $conteudo .= '<b>Telefone</b> - '.$telefone.'<br/>';
	$conteudo .= '<b>Destinatários</b> - '.implode(' , ',$destinatario).'<br/>
	<b>Assunto</b>'.$assunto.'<br/>
	<b>Mensagem</b>'.$mensagem.'<br/>';
	
	// Instanciamos a classe PHPMailer
	$mail = new PHPMailer();
	// Aqui definimos o charset do e-mail a ser enviado.
	$mail->CharSet = 'UTF-8';
	//Definimos que é SMTP
	$mail->IsSMTP();
	//Definimos que utilizaremos HTML
	$mail->IsHTML(true);
	// habilitamos autenticação SMTP
	$mail->SMTPAuth = true;
	// seta o prefixo ssl
	$mail->SMTPSecure = 'ssl';
	// seta o Gmail como servidor SMTP                 
	$mail->Host = 'smtp.gmail.com';
	// seta a porta SMTP
	$mail->Port = 465;
	// Nome de usuário do Gmail
	$mail->Username = $username;
	// Senha do usuário do Gmail
	$mail->Password = $password;
	// Aqui você coloca o e-mail que vai aparecer como remetente
	$mail->From = $from;
	// Aqui você coloca o nome que vai aparecer como remetente
	$mail->FromName = $fromName;
	// Aqui vai a variável que tem o assunto, que vem do formulário
	$mail->Subject = $assunto;
	// Seta o WordWrap
	$mail->WordWrap = 50;
	// Aqui vai o conteúdo da mensagem a ser enviada
	$mail->MsgHTML($conteudo);
	// Aqui vai o e-mail da pessoa que enviou o contato, para resposta
	$mail->AddReplyTo($email,$nome);
	// Aqui varremos o array $destinatario para adicionar os e-mail selecionados
	foreach($destinatario as $destino)
	{
		$mail->AddAddress($destino);	
	}
	// Aqui enviamos o e-mail. Caso apresente algum erro, vai exibi-lo.
	if(!$mail->Send()) 
	{
	  echo 'Erro ao enviar e-mail: ' . $mail->ErrorInfo;
	} 
	else 
	{
	  echo 'Sua mensagem foi enviada com sucesso.';
	  unset($_POST);
	}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>Pafi - Kontaktseite mit Adressen und Kontakten des Pateschaftsprojektes</title>
	<meta name="Language" content="de" />
	<meta name="Description" content="Kontaktseite Pafi, Seite mit Adressen, Kontakten und Telefonummern der im Projekt involvierten Personen" />
	<meta name="Keywords" content="pafi, patenschaftsprojekt, informationen, kontakt, kontaktpersonen, patenschaften, patenschaftsprojekt, spenden, projektleitung, sekretariat" />
	
	<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" />
	<link rel="shortcut icon" href="images/favicon.ico" />
</head>
<body>
	<div id="limites">
		<?php include 'inc/header.php'; ?>
		<?php include 'inc/menu.php'; ?>
		<div id="conteudo">
			<h3 class="pad_h3">Kontakt</h3>
			<p class="p_txt">Für Informationen und neue Patenschaften wenden sie sich an folgende Stellen:</p>
			<div id="caixa_k1">
				<form id="contato" name="contato" method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
					<fieldset>
						<legend class="transpar">Komentar</legend>
						<legend class="transpar"></legend>
						<label for="Destinatario" id="Destinatario">
							An:
							<?php 
								echo '<select id="Destinatario" name="Destinatario">';
								echo '<option value="">Empfänger auswählen</option>';
									foreach ($destinos as $chave => $valor)
								{
									echo '<option name="Destinatario[]" value="'.$valor.'" id="destinatario_0"';
									echo (isset($_POST['Destinatario']) && in_array($valor,$_POST['Destinatario'])) ? 'selected="selected" ' : '' ; 
									echo '/>'.$chave; 
								}
								echo '</select>';
							?>
							
						</label>
						<br/><br/>
						<label for="nome" id="nome">
							Name: <input type="text" name="Nome" id="Nome" value="<?php echo (isset($_POST['Nome'])) ? $_POST['Nome']: '' ; ?>" class="campos" />
						</label><br/><br/>
						<label for="email" id="email">
							e-Mail: <input type="text" name="E-mail" id="E-mail" value="<?php echo (isset($_POST['E-mail'])) ? $_POST['E-mail']: '' ; ?>" class="campos" />
						</label><br/><br/>
						<label for="mensagem" id="mensagem">
							Nachricht:<br/><textarea name="Mensagem" cols="37" rows="4"><?php echo (isset($_POST['Mensagem'])) ? $_POST['Mensagem']: '' ; ?></textarea>
						</label><br /><br />
						<input name="enviar" type="submit" value="enviar" class="botao"/>
					</fieldset>
					<div id="erro">
						<?php
							/**
							 * Aqui testamos. Se a $erro não estiver vazia, significa que temos erro no preenchimento do formulário,
							 * então exibimos os erros no preenchimento.
							 * Para formatar a mensagem, formate o #erro no seu CSS.
							 */ 
							echo (!empty($erro)) ? ''.$erro : '' ; 
						?>
					</div>
				</form>
			</div>
	</div>
</body>
</html>

Nos itens onde precisam ser alterados por dados do meu servidor, e-mails das pessoas, etc. foi feito no meu arquivo q tenho aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve estar atenta a estas 2 linhas

        // aqui incluímos a pasta onde está a classe PhpMailer no include_path
        set_include_path('PHPMailer'. PATH_SEPARATOR .get_include_path());
        
        // incluímos a classe phpmailer. Não utilizamos a pasta onde ela está porque já incluímos anteriormente
        include 'class.phpmailer.php';  

Provavelmente o problema está aqui. Verifique os nomes dos arquivos.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve estar atenta a estas 2 linhas

        // aqui incluímos a pasta onde está a classe PhpMailer no include_path
        set_include_path('PHPMailer'. PATH_SEPARATOR .get_include_path());
        
        // incluímos a classe phpmailer. Não utilizamos a pasta onde ela está porque já incluímos anteriormente
        include 'class.phpmailer.php';  

Provavelmente o problema está aqui. Verifique os nomes dos arquivos.

 

Carlos Eduardo

 

Faz muito sentido, afinal a classe nao estava lá. Só que eu baixei o PHPMailer através do link que estava aqui no fórum e já estava sem a classe dentro da pasta... não entendi pq.

Baixei o PHPMailer de outro site e agora assim a classe estava lá. Ainda não fiz todos os testes pois sendo iniciante em PHP ainda tenho algumas dúvidas, mas assim que conseguir finalizar posto aqui.

 

Obrigada pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matias Resende,

 

Estou testando o seu script e estou me deparando com o mesmo problema que o PhEu.BR no post

#18, vejo que voce da uma explicação e ele diz que esta tudo ok, mas o código que você coloca não tem nada de diferente.

vi varias vezes e não compreendi o porque da mensagem retorna com o nome do remetente.

 

por gentileza você poderia dar uma explanação deste problema?

 

e eu tenho uma outra dúvida sobre o phpmailer: se eu quiser enviar via servidor remoto

deverei usar o método Sendmail() ou pelo IsSMTP() mesmo? e em que diretorio iria colocar

a class phpmailer? pois vejo que para funcionar localmente devo colocá-lo la no PEAR.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bergs

 

Sobre a questão do post #18, no post #19 eu fiz a pergunta. Como está aquela parte do seu código? Então, poste esta parte do código.

 

e eu tenho uma outra dúvida sobre o phpmailer: se eu quiser enviar via servidor remoto

deverei usar o método Sendmail() ou pelo IsSMTP() mesmo? e em que diretorio iria colocar

a class phpmailer? pois vejo que para funcionar localmente devo colocá-lo la no PEAR.

Não precisa colocar no PEAR, desde que você inclua a classe no seu include path ou então faça o require diretamente do arquivo, colocando o caminho completo para o arquivo.

 

Quando você diz servidor remoto, o que você quer dizer?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu caro Matias Rezende,

como eu faria para colocar neste seu código, um dropdown para selecionar o destinatário ?

Para enviar para o e-mail escolhido pelo usuário ? ou no seu código eu posso selecionar o destinatário ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.