CODIGNITER SMTP Mensaje de correo electrónico: caracteres reemplazados con signos iguales -- php campo con codeigniter campo con email campo con smtp campo con exchange-server camp Relacionados El problema

CodeIgniter SMTP email message - characters replaced with equal signs


17
vote

problema

Español

Estoy usando la biblioteca de correo electrónico de Codeigniter para enviar correos electrónicos utilizando nuestro servidor de Exchange. El problema que obtengo es que el contenido del correo electrónico se ensucia.

Hay algunas palabras que se reemplazan con signos iguales "=", probé 2 servidores de intercambio diferentes (están en diferentes lugares y no tienen relación con lo que nunca) y todavía obtengo el mismo problema. Si uso cualquier otro servidor como un servidor SMTP para enviar correos electrónicos, todo funciona bien y el contenido permanece intacto e sin cambios.

Contenido Antes de enviar:

  Dear Customer  Please find attached a comprehensive explanation of how to get our brochure of Angola. This has been sent to you at the request of Alex.  The information has been taken from www.example.co.uk  "Company name" is one of the leading tile and marble companies in the UK.    

Contenido después de enviarlo a través del Microsoft Exchange:

  Dear Customer  Please find attached a comprehensive explanation of how to get our brochure of A=gola. This has been sent to you at the request of Alex.  The information has been taken from www.example.co.uk  "Company name" is one of the leadi=g tile and marble companies in the UK.    

Como puede ver por alguna razón, algunos de los caracteres "N" fueron reemplazados por signos iguales "=" (ejemplo: angola & gt; a = gola)

Mi configuración de correo electrónico:

  $this->load->library('email'); $config['charset']      = 'utf-8'; $config['mailtype']     = 'html';   // SMTP $config['protocol']     = 'smtp'; $config['smtp_host']    = 'exchange.example.com'; //ssl:// $config['smtp_user']    = 'email@example.com'; $config['smtp_pass']    = 'password'; $config['smtp_port']    = 25;  $this->email->set_newline( "  " );  $this->email->initialize( $config );  $this->email->clear();  ......  $this->email->from( $frome, $fromn ); $this->email->to( $email );  $this->email->subject( $subject ); $this->email->message( $send_message );   $this->email->send();   

¿Alguien sabe por qué el intercambio de Microsoft se está comportando de esta manera? ¿O hay algún tipo de ajuste que debo usar?

Original en ingles

I'm using the CodeIgniter email library to send emails using our Exchange server. The problem I get is that the content of the email gets messed up.

There are some words that get replaced with equal signs "=", I tried 2 different Exchange servers (they are in different locations and have no relation what so ever) and I still get the same issue. If I use any other server as an SMTP server to send emails everything works fine and the content stays intact and unchanged.

Content before sending:

Dear Customer  Please find attached a comprehensive explanation of how to get our brochure of Angola. This has been sent to you at the request of Alex.  The information has been taken from www.example.co.uk  "Company name" is one of the leading tile and marble companies in the UK.  

Content after sending it through the Microsoft Exchange:

Dear Customer  Please find attached a comprehensive explanation of how to get our brochure of A=gola. This has been sent to you at the request of Alex.  The information has been taken from www.example.co.uk  "Company name" is one of the leadi=g tile and marble companies in the UK.  

As you can see for some reason some of the "n" characters were replaced with equal signs "=" (Example: Angola > A=gola)

My email configuration:

$this->load->library('email'); $config['charset']      = 'utf-8'; $config['mailtype']     = 'html';   // SMTP $config['protocol']     = 'smtp'; $config['smtp_host']    = 'exchange.example.com'; //ssl:// $config['smtp_user']    = 'email@example.com'; $config['smtp_pass']    = 'password'; $config['smtp_port']    = 25;  $this->email->set_newline( "\r\n" );  $this->email->initialize( $config );  $this->email->clear();  ......  $this->email->from( $frome, $fromn ); $this->email->to( $email );  $this->email->subject( $subject ); $this->email->message( $send_message );   $this->email->send(); 

Does anyone know why is the Microsoft exchange behaving this way? or is there some sort of setting I should use?

              

Lista de respuestas

42
 
vote
vote
La mejor respuesta
 

Eso es extraño, especialmente, ya que no todos los <input type="submit"/> 1 S están transliterados y no en una posición específica.

Intente llamar <input type="submit"/> 2 también. Busque los detalles del mensaje a cambio e inspeccione el <input type="submit"/> 3 y CHARST / CODING - Publique la cosa RAW aquí para que podamos inspeccionarlo.

Encontré esto en Microsoft KnowledgeBase :

Microsoft Exchange usa un conjunto de caracteres mejorado. El mimo predeterminado El conjunto de caracteres para Microsoft Exchange es ISO 8859-1. Algunas puertas de enlace hacen No es compatible con la forma en que este personaje establece un retorno suave para la línea Feeds. Cuando esto ocurre, cada línea se termina con un signo igual Mostrando la salida de línea donde termina el soporte de longitud de línea de la puerta de enlace.

 

That's odd, specially since not all the ns are transliterated and not at a specific position.

Try calling $this->email->set_crlf( "\r\n" ); as well. Look up the message details in Exchange and inspect the Content-Type and Charset / Encoding - post the raw thing here so we can inspect it.

I found this in Microsoft Knowledgebase:

Microsoft Exchange uses an enhanced character set. The default MIME character set for Microsoft Exchange is ISO 8859-1. Some gateways do not support the way this character set issues a soft return for line feeds. When this occurs, each line is terminated with an equal sign showing the line break where the gateway's line-length support ends.

 
 
         
         
2
 
vote

Solucioné esto (un poco) mediante la configuración $charlim = '998' en la función _prep_quoted_printable .

Cuando configuré $crlf = " " El correo electrónico resultante fue completamente confuso por alguna razón. Pero me di cuenta de que los signos que aparecían a intervalos regulares que se causaron por la longitud de la línea limitada a 76 caracteres. Así que aumentar los caracteres MAX por línea (998 es el límite RFC2822) resuelve el problema, siempre y cuando no tenga líneas realmente largas.

 

I solved this (kinda) by setting $charlim = '998' in the _prep_quoted_printable function.

When I set $crlf = "\r\n" the resulting email was completely garbled for some reason. But I noticed that the = signs were appearing at regular intervals which was caused by the line length being limited to 76 characters. So increasing the max characters per line (998 is the RFC2822 limit) solves the problem, as long as you don't have really long lines.

 
 

Relacionados problema

4  Enviar automáticamente un correo electrónico de la aplicación Android a través de Exchange Server  ( Automatically send email from android app through exchange server ) 
¿Alguien ha intentado enviar correos electrónicos automáticamente (sin interacción del usuario) de su aplicación de Android a través del protocolo de Exchange...

1  ¿Cómo hago este ejemplo de autenticación ASP WebDAV FBA en PHP?  ( How do i do this asp webdav fba authentication example in php ) 
Necesito que PHP se autentique en un servidor de Exchange. Una vez capaz de conectarse con éxito, necesitaré escribir solicitudes de WebDAV en el PHP para que...

56  ¿La mejor manera de acceder a Exchange usando PHP?  ( Best way to access exchange using php ) 
Estoy escribiendo una aplicación CMS en PHP y uno de los requisitos es que debe poder interactuar con el servidor de Exchange del cliente. He escrito esta fun...

0  WebDAV vs. SDK para acceder al calendario de Exchange 2003  ( Webdav vs sdk for accessing the exchange 2003 calendar ) 
Estoy tratando de averiguar cómo acceder al calendario de Exchange 2003 desde una página ASP.NET/c# de ASP.NET (solo necesito leer y mostrar las citas / reuni...

1  Respuesta PHP directamente desde lenguaje C / C ++  ( Php response directly from c c language ) 
Estoy buscando una forma eficiente de responder a una solicitud HTTP. Cuando se recibe una solicitud HTTP (APACHE / PHP WebServer Environment), quiero saber s...

1  Error de cáscara de alimentación  ( Power shell error trapping ) 
No puedo averiguar por qué PowerShell no atrapará errores al ejecutar un script contra Office365 (Exchange Online). Recibo el mensaje de error en bruto cada v...

9  C # lectura programáticamente correos electrónicos del servidor de Exchange  ( C sharp programmatically reading emails from the exchange server ) 
Cuando busca en la web encontrará respuestas muy fáciles para "Cómo leer correos electrónicos programáticamente" ... Al los sitios web están explicando la may...

0  LDAP - Encuentra el directorio "Base"  ( Ldap find the base directory ) 
Actualmente estoy configurando un sistema PBX en mi trabajo. Estoy teniendo problemas a Figurung cómo conectarse al servidor LDAP de Exchange. Para ser más es...

0  PowerShell - MS Exchange E-mail AutoPonder  ( Powershell ms exchange e mail autoresponder ) 
Actualmente hemos recibido un problema en el que estamos recibiendo muchos correos electrónicos rebotados (desde un correo electrónico generado automáticament...

1  Crear reglas de bandeja de entrada utilizando la API administrada EWS  ( Create inbox rules by using the ews managed api ) 
Estoy tratando de crear una regla usando EWS API para un buzón compartido. Para eso estoy usando el siguiente código: Rule newRule = new Rule(); ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos