He estado trabajando en un sitio web recientemente y se decidió incluir un PHPMailer en él. El problema es que soy húngaro y el sitio es totalmente en húngaro demasiado así que tuve que usar UTF-8 caracteres. El PHP mailer me decidí a utilizar todavía no es capaz de usar UTF-8 y no puedo averiguar cómo hacer que echo cosas en mi preferido de juego de caracteres. Por favor ayuda!

<?php
require_once('phpmailer/class.phpmailer.php');
$mail = new PHPMailer();
if( isset( $_POST['template-contactform-submit'] ) AND $_POST['template-contactform-submit'] == 'submit' ) {
if( $_POST['template-contactform-name'] != '' AND $_POST['template-contactform-email'] != '' AND $_POST['template-contactform-message'] != '' ) {
$name = $_POST['template-contactform-name'];
$email = $_POST['template-contactform-email'];
$phone = $_POST['template-contactform-phone'];
$service = $_POST['template-contactform-service'];
$subject = $_POST['template-contactform-subject'];
$message = $_POST['template-contactform-message'];
$subject = isset($subject) ? $subject : 'New Message From Contact Form';
$botcheck = $_POST['template-contactform-botcheck'];
$toemail = ''; //Your Email Address
$toname = ''; //Your Name
if( $botcheck == '' ) {
$mail->SetFrom( $email , $name );
$mail->AddReplyTo( $email , $name );
$mail->AddAddress( $toemail , $toname );
$mail->Subject = $subject;
$name = isset($name) ? "Név: $name<br>" : '';
$email = isset($email) ? "E-mail: $email<br><br>" : '';
$message = isset($message) ? "Üzenet: $message<br>" : '';
$referrer = $_SERVER['HTTP_REFERER'] ? '<br><br><br>Az üzenetet továbbította: ' . $_SERVER['HTTP_REFERER'] :'';
$body = "$name $email $message $referrer";
$mail->MsgHTML( $body );
$mail->CharSet="UTF-8";
$sendEmail = $mail->Send();
if( $sendEmail == true ):
echo 'Üzenet elküldve!';
else:
echo 'Üzenetküldés sikertelen. Kérlek próbáld újra!' . $mail->ErrorInfo . '';
endif;
} else {
echo 'Bot vagy. Kérlek próbálkozz újra!';
}
} else {
echo 'Kérlek tölts ki minden mezőt és próbáld meg újra!';
}
} else {
echo 'Valami félrecsúszott. Kérlek próbáld meg mégegyszer.';
}
?>
  • PHPMailer no tiene ningún problema con la codificación UTF-8 – es más probable que tenga un problema de entorno que se jugara. En realidad no dicen cuál es el problema o cómo/donde aparece. Una cosa – msgHTML hace mucho que puede ser dependiente de el juego de caracteres, a fin de establecer la CharSet de la propiedad antes de llamar. También asegúrese de que está utilizando la última generación de PHPMailer – puedo ver que te has basado tu código en un viejo ejemplo.
  • El problema es cuando el correo se llama y el correo se envía (o un error ocurre) hay un código jquery en el sitio que imprime el correspondiente eco de la mailer y está lleno de «?» caracteres. ¿Me puedes mostrar un ejemplo de la última mailer o puede usted link pls?
  • OK, así que los corruptos de los caracteres que están en el sitio web, no en el correo electrónico? Si es así, asegúrese de que su sitio es la configuración de la correcta Charset en el encabezado de tipo de Contenido y que su editor es el uso de UTF-8 también. PHPMailer vive aquí, usted encontrará ejemplos en la carpeta de ejemplos.
  • Ellos están en el eco-s y el correo también en $nombre, $email, $mensaje, $url de referencia, donde el original Enviado el correo como este «Nombre: George» quiero que enviar el equivalente húngaro «Név: George» y lo envía como esta: «N�v: George» también los ecos de la pantalla como esta: «�zenet elk�ldve!» en lugar de «Üzenet elküldve!» («Mensaje enviado!» en inglés). Gracias por el enlace. Va a cejas a través de ella.
  • OK, así que parece que tienen un problema más generalizado y UTF-8 caracteres no se procesa correctamente fuera de PHPMailer bien.
  • Yo no creo que el problema se alza con el sitio o el javascript. Lo he probado sin el jquery y el problema sigue en pie. El correo se envía y el Mensaje enviado echo de vuelta (en húngaro, ofc), pero todos los caracteres especiales no se representan y se parece a esto. i.imgur.com/sLIvkmN.png
  • Si voy a visitar a esa URL, el texto contiene corruptos chars. El encabezado de tipo de contenido es especificar correctamente la codificación UTF-8. Si me ajustar la codificación en el cliente final, puedo ver que el texto se codifica como ISO-8859-1, UTF-8. Tengo la sospecha de que su editor es la culpa – el archivo de origen no está en el conjunto de caracteres correcto.
  • Acabo de darme cuenta de que 30seconds hace que DW se establece en la codificación predeterminada……………….. FFS! Alrededor de 5 horas de dolor de cabeza para nada y ahora funciona perfectamente… Gracias por sus respuestas, aunque al menos he actualizado a la última phpmailer porque de esto 😀 tengo otra pregunta, sin embargo. Es allí cualquier manera posible para hacer de este código a prueba de spam? Porque cada correo electrónico que envíe termina en la carpeta de correo no deseado.
  • Me alegro de que usted se fija – es probablemente vale la eliminación de esta pregunta ya que es un local config problema y es improbable que sea útil a los demás.
  • Es allí cualquier manera posible para hacer de este código a prueba de spam? Porque cada correo electrónico que envíe termina en la carpeta de correo no deseado.
  • No hay manera fácil, pero usted debe considerar el uso de SPF, DKIM, asegurándose de que sus IPs resolver correctamente, no se forja de la dirección. Todo sistema/configuración de red cosas, más que nada dentro de PHPMailer.
  • Oki! Gracias por su tiempo. En realidad he trabajado con los filtros de gmail por lo que su lugar improvisado, pero funciona!

InformationsquelleAutor Zsolt Bíró | 2015-07-22

1 Comentario

  1. 4

    Intentar reemplazar:

    $mail->CharSet="UTF-8";

    por:

    $mail->CharSet = 'UTF-8';

    Funciona a la perfección aquí.

    • Y qué cambiar nada?
    • Lo siento, soy novato y no sé cómo responder a la diferencia, pero entre comillas dobles no funciona, acabo de cambiar a las comillas simples y funcionó. Tal vez algún otro usuario puede explicar por qué sucede esto.

Dejar respuesta

Please enter your comment!
Please enter your name here