Jump to content
Kyrstannie

ANSWERED Problema com caracteres especiais - Outlook

Recommended Posts

Kyrstannie

Olá comunidade!

Estou com um problema que não consigo resolver. Tenho um script para enviar e-mails e está tudo a funcionar corretamente, exceto um pormenor. Toda mensagem recebida no Outlook contém caracteres estranhos (no Gmail não há problemas).

No Outlook o assunto é exibido assim:
Formulário do Site (em vez de Formulário do Site).

E o corpo da mensagem:

Nome: João (em vez de João)
E-mail: hello@hello.com
Mensagem: olá! (em vez de olá!)

Pesquisei e tentei durante horas resolver, mas não sei mais o que estou a fazer. A sugestão mais frequente que encontro é para usar a classe PHPMailer para resolver estas questões. Experimentei usar a classe, mas o problema mantém-se. Alguém sabe como posso resolver isto?

Deixo abaixo aqui o código que estou a usar:

<?php 
//////////////////////////
//Specify default values//
//////////////////////////

//Your E-mail

$your_email = 'kyrstie@outlook.com';

//Default Subject if 'subject' field does not exist
$default_subject = 'Formulário do Site';

//Message if 'name' field not specified
$name_not_specified = 'Por favor digite um nome válido';

//Message if 'message' field not specified
$message_not_specified = 'Por favor digite uma mensagem válida';

//Message if e-mail sent successfully
$email_was_sent = 'Sua mesagem foi enviada!';

//Message if e-mail not sent (server not configured)
$server_not_configured = 'Sorry, mail server not configured';


///////////////////////////
//Contact Form Processing//
///////////////////////////
$errors = array();
$response = array('error' => '', 'success' => '');

$params = array();
parse_str($_POST['data'], $params);

header('Content-type: application/json charset=iso-8859-1');

if(isset($params['message']) and isset($params['username'])) {

	if(!empty($params['username']))
		$sender_name  = stripslashes(strip_tags(trim($params['username'])));
	
	if(!empty($params['message']))
		$message      = stripslashes(strip_tags(trim($params['message'])));
	
	if(!empty($params['email']))
		$sender_email = stripslashes(strip_tags(trim($params['email'])));
	
	if(!empty($params['subject']))
		$subject      = stripslashes(strip_tags(trim($params['subject'])));


	//Message if no sender name was specified
	if(empty($sender_name)) {
		$errors[] = $name_not_specified;
	}

	//Message if no message was specified
	if(empty($message)) {
		$errors[] = $message_not_specified;
	}

	$from = (!empty($sender_email)) ? 'From: '.$sender_email : '';

	$subject = (!empty($subject)) ? $subject : $default_subject;

	//$message = (!empty($message)) ? wordwrap($message, 70) : '';

	$message = "	Nome: $sender_name 

	E-mail: $sender_email 

	Mensagem: $message

	";


	//sending message if no errors
	if(empty($errors)) {
		if (mail($your_email, $subject, $message, $from)) {
            $response['success'] = $email_was_sent;
		} else {
			$errors[] = $server_not_configured;
            $response['error'] = implode('<br>', $errors );
		}
	} else {
        $response['error'] = implode('<br>', $errors );
	}
} else {
	// if "name" or "message" vars not send ('name' attribute of contact form input fields was changed)
    $response['error'] = '"name" and "message" variables were not received by server. Please check "name" attributes for your input fields';
}

echo json_encode( $response );

?>

 

Edited by Kyrstannie

Share this post


Link to post
Share on other sites
bsccara

Os emails não devem ter o Content-Type certo no cabeçalho. Pelo aspecto o Outlook espera caracteres codificados em ISO-8859-1 e o teu código está a enviar caracteres codificados em Unicode. Vê esta página para uma solução para PHP.

  • Vote 1

Share this post


Link to post
Share on other sites
Kyrstannie
4 hours ago, bsccara said:

Os emails não devem ter o Content-Type certo no cabeçalho. Pelo aspecto o Outlook espera caracteres codificados em ISO-8859-1 e o teu código está a enviar caracteres codificados em Unicode. Vê esta página para uma solução para PHP.

Olá @bsccara!

Obrigada pelo auxílio.
Consegui resolver! 😊

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.