在c#中使用smtp在同一线程中为gmail发送电子邮件

use*_*909 2 c# email

我正在使用邮件消息类发送电子邮件。但如果我检查我的 Gmail 帐户,邮件会作为单独的邮件收到。我想要在一个线程中发送邮件。我也使用相同的主题并尝试在主题之前附加“Re:”。它对我不起作用。如果得到解决方案,我会很高兴。以下是我正在使用的代码。

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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Nis*_*sus 5

您应该知道线程启动者电子邮件内部 ID,然后您应该通过标题“In-Reply-To:”或“References:”将其发回。顺便说一句,通过 gmail 发送电子邮件相当简单:

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

using (MailMessage message = new MailMessage("USERNAME@gmail.com","USERNAME@gmail.com"))
{
    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);
}
Run Code Online (Sandbox Code Playgroud)