Как ответил @jbl, мы использовали концепцию плюсовой адресации. Мы попросили нашего провайдера электронной почты включить эту концепцию на нашем SMTP
сервере. Gmail предоставляет это по умолчанию.
При отправке любого электронного письма мы отправляем уникальный ответ на адрес для каждой записки, введенной в заказ, как показано ниже.
String sReplyToadd = "replyto@domain.com";
String replyToAddress = sReplyToadd.Substring(0, sReplyToadd.IndexOf('@')) + "+on" + orderID + "un" + userID + sReplyToadd.Substring(sReplyToadd.IndexOf('@'), sReplyToadd.Length - sReplyToadd.IndexOf('@'));
Это сделает replyToAddress = "replyto+on1234un5678@domain.com"
, уникальный адрес для идентификации заказа и пользователя, который разместил заметку.
Теперь этот уникальный ответ на адрес будет назначен электронной почте, как показано ниже.
using (MailMessage objEmail = new MailMessage())
{
objEmail.Body = eMailBody;
objEmail.From = new MailAddress("from@domain.com", "Display Name");
objEmail.IsBodyHtml = true;
objEmail.Subject = "email subject goes here";
objEmail.To.Add(new MailAddress("tosomeuser@gmail.com");
//here we set the unique reply to address for the outgoing email
objEmail.ReplyTo = new MailAddress(replyToAddress); //replyto+on1234un5678@domain.com
SmtpClient objSmtp = new SmtpClient();
objSmtp.EnableSsl = true;
objSmtp.Credentials = new NetworkCredential("username", "password");
objSmtp.Host = "127.0.0.1";//"smtp.gmail.com" for gmail
objSmtp.Port = 25;
objSmtp.Send(objEmail);
}
ReplyTo
адрес появится в адресе to, если пользователь нажимает кнопку ответа в своем почтовом клиенте, как показано ниже.
Если пользователь не изменит адрес To
, он будет получен в нашем replyto@domain.com
почтовом ящике. Мы помещаем примечание внизу каждого выходящего электронного письма: Пожалуйста, не меняйте адрес Кому, чтобы правильно сопоставить ваш ответ с системой.
Как только электронная почта достигает почтового ящика, нам просто нужно проверить To
адрес ответа на электронную почту и получить требуемый идентификатор заказа и идентификатор пользователя, как показано ниже
String replyFor = objEmail.To[0].ToString();
Int64 orderID = Convert.ToInt64(replyFor.Substring(replyFor.LastIndexOf("+on") + 3, replyFor.LastIndexOf("un")));
Int64 userID = replyFor.Substring(replyFor.LastIndexOf("un") + 2, replyFor.IndexOf("@") - replyFor.LastIndexOf("un") - 2);
А потом мы жили долго и счастливо !!!