Kyrstannie 0 Posted October 11, 2019 Report Share Posted October 11, 2019 (edited) 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 October 15, 2019 by Kyrstannie Link to post Share on other sites
Solution bsccara 27 Posted October 12, 2019 Solution Report Share Posted October 12, 2019 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. 1 Report Link to post Share on other sites
Kyrstannie 0 Posted October 12, 2019 Author Report Share Posted October 12, 2019 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! 😊 Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now