2010-08-30 5 views
2

J'utilise le courrier électronique classe pour envoyer un e-mail. Mais si je vérifie mon compte Gmail, le courrier est reçu en tant que courrier séparé. Je veux des mails dans un seul fil. J'utilise également le même sujet et j'ai essayé d'ajouter "Re:" avant le sujet. ça n'a pas marché pour moi. Je serai heureux si vous obtenez la solution. Voici le code que j'utilise.Envoyer un e-mail dans le même fil pour Gmail en utilisant smtp dans C#

public static bool SendEmail(
    string pGmailEmail, 
    string pGmailPassword, 
    string pTo, 
    string pFrom, 
    string pSubject, 
    string pBody, 
    System.Web.Mail.MailFormat pFormat, 
    string pAttachmentPath) 
    { 
     try 
     { 
      System.Web.Mail.MailMessage myMail = new System.Web.Mail.MailMessage(); 
      myMail.Fields.Add 
       ("http://schemas.microsoft.com/cdo/configuration/smtpserver", 
           "smtp.gmail.com"); 
      myMail.Fields.Add 
       ("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 
           "465"); 
      myMail.Fields.Add 
       ("http://schemas.microsoft.com/cdo/configuration/sendusing", 
           "2"); 
      //sendusing: cdoSendUsingPort, value 2, for sending the message using 
      //the network. 

      //smtpauthenticate: Specifies the mechanism used when authenticating 
      //to an SMTP 
      //service over the network. Possible values are: 
      //- cdoAnonymous, value 0. Do not authenticate. 
      //- cdoBasic, value 1. Use basic clear-text authentication. 
      //When using this option you have to provide the user name and password 
      //through the sendusername and sendpassword fields. 
      //- cdoNTLM, value 2. The current process security context is used to 
      // authenticate with the service. 
      myMail.Fields.Add 
      ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); 
      //Use 0 for anonymous 
      myMail.Fields.Add 
      ("http://schemas.microsoft.com/cdo/configuration/sendusername", 
       pGmailEmail); 
      myMail.Fields.Add 
      ("http://schemas.microsoft.com/cdo/configuration/sendpassword", 
       pGmailPassword); 
      myMail.Fields.Add 
      ("http://schemas.microsoft.com/cdo/configuration/smtpusessl", 
       "true"); 
      myMail.From = pFrom; 
      myMail.To = pTo; 
      myMail.Subject = pSubject; 
      myMail.BodyFormat = pFormat; 
      myMail.Body = pBody; 
      if (pAttachmentPath.Trim() != "") 
      { 
       MailAttachment MyAttachment = 
         new MailAttachment(pAttachmentPath); 
       myMail.Attachments.Add(MyAttachment); 
       myMail.Priority = System.Web.Mail.MailPriority.High; 
      } 

      // System.Web.Mail.SmtpMail.SmtpServer = CCConstants.MAIL_SERVER; 
      System.Web.Mail.SmtpMail.Send(myMail); 
      return true; 
     } 
     catch 
     { 
      throw; 
     } 
    } 

Répondre

3

vous devez savoir démarreur email ID fil interne, vous devez le renvoyer via les en-têtes "In-Reply-To:" ou "Références:". Btw envoyer un courriel via Gmail est plutôt simple:

var smtpClient = new SmtpClient("smtp.gmail.com",587); 
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
smtpClient.EnableSsl = true; 
smtpClient.UseDefaultCredentials = false; 
smtpClient.Credentials = new NetworkCredential("[email protected]" 
      ,"PASSWORD"); 
using (MailMessage message = new MailMessage("[email protected]","[email protected]")) 
{ 
    message.Subject = "test"; 
    smtpClient.Send(message); 
} 

using (MailMessage message = new MailMessage("[email protected]","[email protected]")) 
{ 
    message.Subject = "Re: test"; 
    message.Headers.Add("In-Reply-To", "<MESSAGEID.From.Original.Message>"); 
    message.Headers.Add("References", "<MESSAGEID.From.Original.Message>"); 
    smtpClient.Send(message); 
} 
+0

merci Nisus pour votre réponse. – user434909

Questions connexes