2011-12-19 28 views

Respuesta

8

Ahora hay un método en el getSentMIMEMessage PHPMailer que devuelve toda la cadena MIME

$mail = new PHPMailer(); 
//code to handle phpmailer 
$result = $mail->Send(); 
if ($result) { 
    $mail_string = $mail->getSentMIMEMessage(); 
    imap_append($ImapStream, $folder, $mail_string, "\\Seen"); 
} 
+0

Eso es correcto. Desde el 13 de julio de 2012. Véase esta lista de cambios: https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md#version-522-beta1-july-13-2012 También es necesario comprobar http: // php.net/manual/en/function.imap-append.php para comprender la función imap_append() y el parámetro $ folder, y http://php.net/manual/en/function.imap-open.php para comprender cómo obtener $ ImapStream. – Cosmitar

1
  • Necesitas estar retransmitir el correo enviado a través del host IMAP
  • El anfitrión IMAP debe ser compatible con la función (que muy pocos lo hacen)

Si cualquiera de estos dos puntos no son ciertas , la respuesta corta es "No puedes". En resumen, realmente depende del proveedor de correo, no de su código.

Por mucho que odie M $, Cambio es un lugar donde realmente tienen las cosas bien - si está utilizando un servidor de Exchange, todo esto se maneja para usted.

4

Bueno, es bastante difícil, pero se puede hacer.

Tome un vistazo a la función imap-append.
Al conectarse a un recurso de secuencia IMAP, puede usar imap-append() para anexar sus correos a la carpeta Enviado de su cuenta IMAP.

Pero leer los comentarios le mostrará que es un poco tedioso de lograr, pero ciertamente no imposible. Probablemente necesite codificar algo por su cuenta, ya que phpmailer no lo admite de fábrica (y lo más probable es que lleve demasiado tiempo implementarlo en lugar de hacer algo usted mismo).

+0

Uf, realmente? Aún así, supongo que es una solución, aunque es una solución, así que le daré uno de estos deliciosos +1. – DaveRandom

+0

Gracias por su respuesta, intentaré esto. – piernik

+0

@DaveRandom Estoy de acuerdo contigo, no es bonito, pero es posible resolver el problema que tiene OP; aunque no entiendo la necesidad ... – Repox

13

Encontré una manera más fácil de hacer esto. PHPmailer prepara el correo electrónico como cadena; todo lo que tienes que hacer es colocarlo en la carpeta IMAP correcta.

amplié clase phpmailer con este código (VARs ya están protegidos no puedo llegar a ellos):

class PHPMailer_mine extends PHPMailer { 
public function get_mail_string() { 
    return $this->MIMEHeader.$this->MIMEBody; 
}} 

código PHP:

$mail= new PHPMailer_mine(); 
//code to handle phpmailer 
$result=$mail->Send(); 
if ($result) { 
    $mail_string=$mail->get_mail_string(); 
    imap_append($ImapStream, $folder, $mail_string, "\\Seen"); 
} 

funciona bien.

+1

¿Puedes dar un ejemplo para los valores de $ ImapStream y $ folder? No puedo determinar cuál debería ser el valor correcto para $ folder, especialmente cuando no tengo acceso de nivel de archivo al servidor de correo (lo estoy usando con Gmail). – Zeeshan

Cuestiones relacionadas