Контакт форма с добър Encoding.

k0kicha

Registered
Дълго време търсих из всичките подобни теми за работещи контакт форми. Изпробвах почти всички и все без успех.

Изработвам всичко както трябва, задължителни полета, попълва се, изпраща се, но във емайла всичко излиза на "маймунки". Пробвах, променях charset... единственото до което стигам е имената на полетата да излязат на български, а попълненото в тях "маймунки" и обратното.

Има ли някой готова или идея как да се направи работеща, контакт форма без тези проблеми?

Необходим ми е добре работещ html файл с формата и send.php файл. Аз ще си го реконструирам с моите изисквания.
 
PHP:
	/** Изпращане на UTF-8 мейлове **/
	function _sendUTFMail($from, $to, $subject, $message, $cc='', $bcc='')
	{
	
		/** Обработка на информацията за подавателя  **/
	
		$_check_from = explode("<",$from );
		if (sizeof($_check_from) > 1) // Проверяваме дали е въведен текст освен E-mail адреса, ако да го енкодваме.
		{
			$headers = "From: =?UTF-8?B?".base64_encode($_check_from[0])."?= <". $_check_from[1] . "\r\n";
		}
		else 
		{
			$headers = "From: $from\r\n";
		}
		
		/** Обработка на информацията  за получателята **/
		
		$_check_to = explode("<",$to );
		if (sizeof($_check_to) > 1) // Проверяваме дали е въведен текст освен E-mail адреса, ако да го енкодваме.
		{
			$to = "=?UTF-8?B?".base64_encode($_check_to[0])."?= <". $_check_to[1];
		}
		/** Обработка на информацията  за получателята **/
		
		if (function_exists('mb_detect_encoding'))
		{
			if (mb_detect_encoding($subject) == 'UTF-8')
			{
				$subject="=?UTF-8?B?".base64_encode($subject)."?=\n"; // За да сме сигурни че заглавието ще е в UTF-8
			}
			else 
			{
				$subject = mb_convert_encoding($subject, 'UTF-8');
				$subject="=?UTF-8?B?".base64_encode($subject)."?=\n"; // За да сме сигурни че заглавието ще е в UTF-8
			}
		}
		else 
		{
				$subject="=?UTF-8?B?".base64_encode($subject)."?=\n"; // За да сме сигурни че заглавието ще е в UTF-8
		}
		/** Обработка на информацията за получателя на копие от съобщението**/
		if($cc != '')
		{
			$_check_cc = explode("<",$cc );
			if (sizeof($_check_cc) > 1) // Проверяваме дали е въведен текст освен E-mail адреса, ако да го енкодваме.
			{
				$headers .= "Cc: =?UTF-8?B?".base64_encode($cc[0])."?= <". $cc[1] . "\r\n";
			}
			else 
			{
				$headers .="CC: $cc\r\n";
			}
		}
		
		/** Обработка на информацията за получателя на скритото копие от съобщението **/
		
		if($bcc != '')
		{
			$_check_bcc = explode("<", $bcc );
			if (sizeof($_check_bcc) > 1)
			{
				$headers .= "Bcc: =?UTF-8?B?".base64_encode($bcc[0])."?= <". $bcc[1] . "\r\n";
			}
			else 
			{
				$headers .= "Bcc: $bcc\r\n";
			}
		}
		
		$headers .=	"Content-Type: text/html; "
					. "charset=UTF-8;\n"
					. "MIME-Version: 1.0\n"
					. "Content-Transfer-Encoding: 8bit\n"
					#. "Reply-To: info@dwdvideo.com\n" 
					. "X-Mailer: PHP\n";
		return mail($to, $subject, $message, $headers);
	
	}
 
Някой може ли да се оправи с кода даден от колегата? Или код (линк) за читава контакт форма?
 
k0kicha каза:
Някой може ли да се оправи с кода даден от колегата? Или код (линк) за читава контакт форма?
Прди няколко години съм писал -
http://uphero.biz/skript-za-kontaktna-forma-raboteshta-korektno-s-kirilitsa/
виж дали ще ти свърши работа.
 
Не разбирам това поле само защо трябва да го има??? Няма ли как да си праща автоматично на зададен мейл?

Код:
        <input type="email" class="form-control" placeholder="Имейла на който ще се праща съобщението" name="to" required autofocus>

Иначе е уникална!
 
k0kicha каза:
Не разбирам това поле само защо трябва да го има??? Няма ли как да си праща автоматично на зададен мейл?

Код:
        <input type="email" class="form-control" placeholder="Имейла на който ще се праща съобщението" name="to" required autofocus>

Иначе е уникална!
Просто си добави:
$to = mail@mail.bg
вместо:
$to = htmlspecialchars($_POST['to']);
 

Горе