manas1711 Ответов: 0

Как мне...как получить идентификатор электронной почты получателя по щелчку ссылки и отправить этот идентификатор электронной почты динамически в качестве параметра строки запроса


У меня есть почтовая программа, в которой я отправляю html-страницу в качестве тела почты.Я использовал переключатели, чтобы сохранить список получателей почты либо из базы данных, либо из листа excel, либо из текстового файла. Вот этот код-
protected void btnSubmit_Click(object sender, EventArgs e)
        {

                      {

                SendHTMLMail();

                       }

            void SendHTMLMail()
            {

                StreamReader reader = new StreamReader(Server.MapPath("~/one.html"));
                string readFile = reader.ReadToEnd();
                Regex regx = new Regex("(?<!src=\")http(s)?://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*([a-zA-Z0-9\\?\\#\\=\\/]){1})?", RegexOptions.IgnoreCase);
                string output = regx.ToString();    
                output = readFile;           
                string username = Server.UrlEncode(this.txtUsername.Text);

                output = regx.Replace(output, new MatchEvaluator((match) =>
                {

                    var url = Uri.EscapeDataString(match.Value.ToString());
                    Regex myRegex = new Regex(@"dho-.*([\d])");     
                    Match myMatch = myRegex.Match(url);
                    string Name = myMatch.Groups[0].Value;
                    return $"http://localhost:61187/two?sender={username}&link={url}&product={Name}";
                 }));


                MailMessage Msg = new MailMessage();  

                Msg.From = new MailAddress(txtUsername.Text);


                Msg.Subject = txtSubject.Text;      
                Msg.Body = output.ToString();
                Msg.IsBodyHtml = true;    

                if (fuAttachment.HasFile)          
                {
                    string FileName = Path.GetFileName(fuAttachment.PostedFile.FileName);

                    Msg.Attachments.Add(new Attachment(fuAttachment.PostedFile.InputStream, FileName));    
                }
                if (RadioButton1.Checked)
                {

                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = "SELECT address FROM address1";
                    cmd.Connection = sql;
                    DataTable dt = new DataTable();
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    sql.Open();
                    da.Fill(dt);
                    sql.Close();

                    foreach (DataRow row in dt.Rows)
                    {

                        Msg.To.Add(row["address"].ToString());

                    }
                }

                else if (RadioButton2.Checked)
                {   
                    string connectionString = "";
                    if (FileUpload1.HasFile)
                    {
                        string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
                        string fileExtension = Path.GetExtension(FileUpload1.PostedFile.FileName);
                        string fileLocation = Server.MapPath("~/App_Data/" + fileName); 
                        FileUpload1.SaveAs(fileLocation);   

                        if (fileExtension == ".xls")
                        {

                            connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
                        }    
                        else if (fileExtension == ".xlsx")
                        {
                            connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
                        }
                        OleDbConnection con = new OleDbConnection(connectionString);
                        OleDbCommand cmd = new OleDbCommand();
                        cmd.CommandType = System.Data.CommandType.Text;
                        cmd.Connection = con;
                        OleDbDataAdapter dAdapter = new OleDbDataAdapter(cmd);
                        DataTable dt = new DataTable();
                        con.Open();
                        DataTable dtExcelSheetName = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                        string getExcelSheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString();
                        cmd.CommandText = "SELECT address FROM [" + getExcelSheetName + "]";
                        dAdapter.SelectCommand = cmd; 
                           dAdapter.Fill(dt);  
                        con.Close();


                        foreach (DataRow row in dt.Rows)
                        {

                            Msg.To.Add(row["address"].ToString());
                        }    
                    }      
                }
                else if (RadioButton3.Checked)
                {
                    if (FileUpload2.HasFile) 
                    {


                        string fileName = Path.GetFileName(FileUpload2.PostedFile.FileName);

                        string fileLocation = Server.MapPath("~/App_Data/" + fileName);
                        FileUpload2.SaveAs(fileLocation);
                        StreamReader sr = new StreamReader(fileLocation);
                        String line = sr.ReadToEnd();
                        string[] toAddressArray;
                        toAddressArray = line.Split(new char[] { ' ' });
                        foreach (string a in toAddressArray)
                        {
                            Msg.To.Add(a);

                        }
                    }
                }

                    SmtpClient smtp = new SmtpClient();
                    smtp.Host = "smtp.gmail.com"; 
                    smtp.Port = 587;
                    smtp.UseDefaultCredentials = false;
                    smtp.Credentials = new System.Net.NetworkCredential(txtUsername.Text, txtpwd.Text);
                    smtp.EnableSsl = true;
                    smtp.Send(Msg);   
                    Msg = null;
                    ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Email sent.');", true);


           }  } 


Теперь получатели из базы данных, excel или текстового файла имеют некоторые уникальные идентификаторы или идентификаторы. Когда получатель нажимает на любую ссылку(поскольку html-страница содержит много ссылок) на html-странице, которую я ему отправил, я заменяю эту ссылку ссылкой на мою страницу ... "http://localhost:61187/two и я передаю некоторые параметры на эту страницу в строке запроса следующим образом-

$"http://localhost:61187/two?sender={username}&link={url}&product={Name}"; 


Теперь, когда получатель нажимает на любую ссылку на html-странице, которую я ему отправил, я хочу получить его почтовый идентификатор. Я знаю, что это может быть достигнуто, если я проверю уникальный идентификатор получателя, чтобы получить его почтовый идентификатор. Где я застрял - это-1. Я не знаю, как динамически получить идентификатор электронной почты в строке запроса на основе уникального идентификатора 2. Как использовать цикл for для проверки получателей, которые перешли по ссылке

Что я уже пробовал:

Я знаю, что это может быть достигнуто, если я проверю уникальный идентификатор получателя, чтобы получить его почтовый идентификатор. Где я застрял - это-1. Я не знаю, как динамически получить идентификатор электронной почты в строке запроса на основе уникального идентификатора 2. Как использовать цикл for для проверки получателей, которые перешли по ссылке

0 Ответов