2011-12-19 18 views

Odpowiedz

8

Istnieje obecnie getSentMIMEMessage metoda PHPMailer która zwraca cały ciąg 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

Zgadza się. Od 13 lipca 2012 r. Zobacz ten dziennik zmian: https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md#version-522-beta1-july-13-2012 Należy również sprawdzić http: // php.net/manual/en/function.imap-append.php, aby zrozumieć funkcję imap_append() i parametr $ folder, i http://php.net/manual/en/function.imap-open.php, aby zrozumieć jak zdobyć $ ImapStream. – Cosmitar

1
  • Musisz być przekazywanie folderze Wysłane przez przyjmującego IMAP
  • Gospodarz IMAP musi obsługiwać tę funkcję (co bardzo niewiele robić)

Jeśli któryś z tych dwóch punktów nie są prawdziwe , krótka odpowiedź brzmi "Nie możesz". Krótko mówiąc, tak naprawdę zależy to od dostawcy poczty, a nie od twojego kodu.

Tak samo jak nienawidzę M $, Exchange to jedno miejsce, w którym naprawdę dobrze się spisało - jeśli korzystasz z serwera Exchange, wszystko to jest dla ciebie obsługiwane.

4

Cóż, to dość trudne, ale można to zrobić.

Proszę spojrzeć na funkcję imap-append.
Łącząc się z zasobem strumieniowym IMAP, można użyć narzędzia imap-append() w celu dołączenia wiadomości e-mail do folderu Wysłane na koncie IMAP.

Ale przeczytanie komentarzy pokaże Ci, że jest to trochę uciążliwe do wykonania, ale na pewno nie jest niemożliwe - prawdopodobnie będziesz musiał napisać coś samodzielnie, ponieważ phpmailer nie obsługuje tego po wyjęciu z pudełka (i najprawdopodobniej będzie zbyt czasochłonne, aby wdrożyć, zamiast tworzyć coś samemu).

+0

Ugh, naprawdę? Mimo to, wydaje mi się, że jest to rozwiązanie, chociaż jest to praca, więc dam ci jeden z tych pysznych +1. – DaveRandom

+0

Dzięki za odpowiedź - spróbuję tego. – piernik

+0

@DaveRandom Zgadzam się z tobą, to nie jest ładne, ale możliwe jest rozwiązanie problemu, jaki ma OP; chociaż nie rozumiem potrzeby ... – Repox

13

Znalazłem prostszy sposób na zrobienie tego. PHPmailer przygotowuje wiadomość e-mail jako ciąg - wszystko, co musisz zrobić, to umieścić ją w odpowiednim folderze IMAP.

I rozszerzył PHPMailer klasę z tym kodem (od Vars są chronione nie mogę do nich dotrzeć):

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

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

to działa dobrze.

+1

Czy możesz podać przykład wartości $ ImapStream i folderu $? Nie jestem w stanie określić, jaka powinna być poprawna wartość folderu $, szczególnie gdy nie mam dostępu do serwera poczty na poziomie pliku (używam Gmaila). – Zeeshan