Kyrstannie Posted October 11, 2019 at 09:10 AM Report #616344 Posted October 11, 2019 at 09:10 AM (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 at 04:33 AM by Kyrstannie
Solution bsccara Posted October 12, 2019 at 12:20 AM Solution Report #616347 Posted October 12, 2019 at 12:20 AM 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
Kyrstannie Posted October 12, 2019 at 04:22 AM Author Report #616348 Posted October 12, 2019 at 04:22 AM Em 12/10/2019 às 02:20, bsccara disse: 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!
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