w moim systemie CRM online Kontroluję ingoing maile z protokołem IMAP. Teraz wysyłam wiadomości e-mail z phpmailerem i protokołem SMTP. Wszystko jest ok, ale mam jedną dziwną rzecz. Jak wysłać wysłane wiadomości e-mail z phpmailerem przejdź do folderu "Wysłane" IMAP?Wysłane maile z phpmailerem nie idą do "Wysłanego" folderu IMAP
Odpowiedz
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");
}
- 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.
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).
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
Dzięki za odpowiedź - spróbuję tego. – piernik
@DaveRandom Zgadzam się z tobą, to nie jest ładne, ale możliwe jest rozwiązanie problemu, jaki ma OP; chociaż nie rozumiem potrzeby ... – Repox
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.
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
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