2016-07-08 13 views
1

Ich arbeite am Ticketing-System in PHP. Ich konvertiere E-Mails in Tickets. Wenn ein Benutzer auf die E-Mail vom Ticketing-System antwortet, sendet er die E-Mail als neue E-Mail an den Kunden. Keine Nachricht/Mail-Threading.Wie funktioniert das Mail-Threading nach dem Hinzufügen der Ticket-ID im Betreff der E-Mail?

Ich denke, mein Problem hängt mit der hinzugefügten Ticket-ID am Ende des Themas zusammen. (Z Subject: Installation Problem [#EMSY45])

Ich habe die Nachrichten-ID und Referenzen in der Kopfzeile übergibt

ich PHPMailer bin mit der E-Mail zu senden.

Hier ist mein Code:

$mail = new PHPMailer(); 
$mail->isSMTP(); // Set mailer to use SMTP 
$mail->Host = str_replace('/', '', $host); // Specify main and backup SMTP servers 
if($outgoing_server_details['smtp_auth'] == 1) 
     $mail->SMTPAuth = true; // Enable SMTP authentication 

$mail->Username = $outgoing_server_details['server_username']; // SMTP username 
$mail->Password = $outgoing_server_details['server_password']; // SMTP password 
$mail->SMTPSecure = $protocol; // Enable TLS encryption, `ssl` also accepted 
$mail->Port = $port; 

$mail->setFrom($outgoing_server_details['from_email_field'], $from_name); 
$mail->addAddress($data['_from'], $to_name); // Add a recipient 
$mail->addReplyTo($outgoing_server_details['from_email_field'], $reply_to_name); 
$message_id = $data['message_id']; 
$mail->AddCustomHeader('In-Reply-To', $message_id); 
$mail->AddCustomHeader('References', $message_id); 

//$mail->addAttachment('/var/tmp/file.tar.gz');   // Add attachments 
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name 
$mail->isHTML(true);         // Set email format to HTML 

$mail->Subject = $data['subject']; 
$mail->Body = $mail_content; 
$mail->send(); 
+0

Sie das Richtige zu tun, indem diese Header Einstellung, aber Sie wirklich die Header in den empfangenen Nachrichten überprüfen müssen - sind Sie sicher, dass die Nachrichten-ID korrekt eingesetzt wird, und passt eine vorherige Nachrichten-ID genau? – Synchro

+0

@Synchro Ich bin sicher, ich füge die Nachricht ID richtig hinzu. Wenn ich die Mail mit IMAP abrufe. Ich bekomme auch die Nachrichten-ID. Ich füge die gleiche Nachrichten-ID für den References-Header hinzu. –

+0

Einige Clients sind besser als andere, wenn sie auf diese Header achten - einige sind ein bisschen nutzlos und verlassen sich darauf, dass Heuristiken übereinstimmenden Betreffzeilen entsprechen - oder sogar beides gleichzeitig. Siehst du dieses Verhalten in allen Client-Apps? – Synchro

Antwort

-1

Wenn Sie Ticket-ID am Ende Betreff der E-Mail dann versuchen, diese hinzuzufügen.

$mail->Subject = "Installation Problem [".$message_id."]"; 

ODER

$mail->Subject = $data['subject'].$message_id;

Und noch eine Korrektur

$mail->isHTML(true); // sollte immer kommen, nachdem der Körper festgelegt ist.

dh

$mail->Subject = $data['subject'].$message_id; 
$mail->Body = $mail_content; 
$mail->isHTML(true); 
$mail->send(); 
+0

Dies ist ein kosmetischer Fix, nicht die Lösung. Es spielt keine Rolle, wenn Sie 'isHTML' aufrufen - lesen Sie den Code. – Synchro

+0

@avinash Ich kann Ticket-ID am Ende des Themas hinzufügen. Mein Problem ist Mail-Threading. Wenn ich am Ende die Ticket-ID hinzufüge, funktioniert das Mail-Threading nicht. –