2011-12-19 5 views

risposta

8

V'è ora un metodo getSentMIMEMessage in PHPMailer che restituisce la stringa intera 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

Esatto. Dal 13 luglio 2012. Vedi questo registro delle modifiche: https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md#version-522-beta1-july-13-2012 Inoltre, è necessario controllare http: // php.net/manual/en/function.imap-append.php per capire la funzione imap_append() e il parametro $ folder, e http://php.net/manual/en/function.imap-open.php per capire come ottenere $ ImapStream. – Cosmitar

1
  • Devi essere l'inoltro della posta inviata attraverso l'IMAP ospite
  • L'host IMAP ha bisogno per supportare la funzione (che molto pochi lo fanno)

Se uno di questi due punti non sono vere , la risposta breve è "Non puoi". In breve, dipende dal provider di posta, non dal codice.

Per quanto odio M $, Exchange è un luogo in cui hanno davvero le cose giuste - se si utilizza un server Exchange, tutto questo viene gestito per te.

4

Beh, è ​​piuttosto difficile, ma può essere fatto.

Dai un'occhiata alla funzione imap-append.
Collegandosi a una risorsa di flusso IMAP, è possibile utilizzare imap-append() per aggiungere i messaggi alla cartella Posta inviata del proprio account IMAP.

Ma leggere i commenti vi mostrerà che è un po 'noioso da realizzare, ma certamente non impossibile - probabilmente dovrete codificare qualcosa da soli, dal momento che phpmailer non supporta questo fuori dalla scatola (e sarà probabilmente troppo dispendioso in termini di tempo per implementare invece di fare qualcosa da soli).

+0

Ugh, davvero? Comunque, suppongo sia una soluzione, anche se un aggiramento, quindi ti darò uno di questi deliziosi +1. – DaveRandom

+0

Grazie per la risposta - ci proverò. – piernik

+0

@DaveRandom Sono d'accordo con te, non è carino, ma è possibile risolvere il problema che l'OP ha; anche se non capisco la necessità ... – Repox

13

Ho trovato un modo più semplice per farlo. PHPmailer prepara la posta elettronica come stringa - tutto ciò che devi fare è metterlo nella giusta cartella IMAP.

ho ampliato classe phpmailer con questo codice (dal Vars sono protetti non riesco a raggiungerli):

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

codice 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"); 
} 

funziona bene.

+1

Puoi dare un esempio per i valori di $ ImapStream e $ cartella? Non riesco a capire quale dovrebbe essere il valore corretto per $ folder, specialmente quando non ho accesso a livello di file al server di posta (sto usando con Gmail). – Zeeshan