简体   繁体   中英

Outlook MailItem HTML Formatting Dropdown

I am currently writing a C# script to send an email.

I am using the mailitem.htmlbody and my table is being formatted correctly.

However, when I added a dropdown to it, the dropdown doesn't work.

The HTML works, I am inclined to believe it is something with Outlook or C#.

private void sendEmail_Click(object sender, EventArgs e)
    {   
        if (tabControl1.SelectedIndex == 0)
        {
            if (dataGridTransactions.SelectedRows.Count > 0)
            {
                string recordOwner = dataGridTransactions.SelectedRows[0].Cells[1].Value.ToString();
                string[] recordOwner1;
                recordOwner1 = recordOwner.Split();
                Outlook.Application application = null;
                application = new Outlook.Application();
                Outlook.MailItem mailItem = (Outlook.MailItem)
                    application.CreateItemFromTemplate("PATH");
                mailItem.Subject ="Auditing Skype, Cell, VOIP, and Glance Logs";
                mailItem.To = recordOwner1[0] + "." + recordOwner1[1] + "@hbmncode.com";
                string htmlString = "<HTML><Body><p>BODY TEXT.</p></body>";
                string htmlTable = "<table runat=server id=Table1 border=1 class=style1><tr><td class=style2 colspan=1>Transaction Type</td><td class=style2 colspan=1>Number/Skype/Name</td><td class=style2>Total Transactions</td><td class=style2 rowspan=1>Outgoing</td><td class=style2>Incoming</td><td class=style2>Date/Time Most Recent Transaction</td><td class=style2>Category</td><td class=style2>Notes</td></tr>";
                for (int i = 0; i < dataGridTransactions.SelectedRows.Count; i++)
                {
                  string name;
                  int cnt = 0;
                  int cntIn = 0;
                  int cntOut = 0;
                  string now = "06/09/2015 10:08";
                  string dropDown = "<form><select><option style=display:none>Choose an item</option><option>Employee</option><option>Affiliate</option><option>Non-Affiliate</option></select></form>";
                  DateTime dateRecent = Convert.ToDateTime(now);
                  if (dataGridTransactions.SelectedRows[i].Cells[2].Value.ToString() == "Phone Call")
                  {
                      name = dataGridTransactions.SelectedRows[i].Cells[8].Value.ToString();
                      cnt = 0;
                      cntIn = 0;
                      cntOut = 0;
                      dateRecent = Convert.ToDateTime(dataGridTransactions.SelectedRows[i].Cells[10].Value.ToString());
                      for (int j = 0; j < dataGridTransactions.SelectedRows.Count; j++)
                      {
                          if (name == dataGridTransactions.SelectedRows[j].Cells[8].Value.ToString())
                          {
                              cnt++;
                              if (dataGridTransactions.SelectedRows[j].Cells[9].Value.ToString() == "Incoming Call")
                              {
                                  cntIn++;
                              }
                              else
                              {
                                  cntOut++;
                              }
                              if(Convert.ToDateTime(dataGridTransactions.SelectedRows[j].Cells[10].Value.ToString()) > dateRecent)
                              {
                                  dateRecent = Convert.ToDateTime(dataGridTransactions.SelectedRows[j].Cells[10].Value.ToString());
                              }
                          }
                      }
                  }
                  else if (dataGridTransactions.SelectedRows[i].Cells[2].Value.ToString() == "VOIP Call")
                  {
                      name = dataGridTransactions.SelectedRows[i].Cells[7].Value.ToString();
                  }
                  else if (dataGridTransactions.SelectedRows[i].Cells[2].Value.ToString() == "Glance")
                  {
                      name = dataGridTransactions.SelectedRows[i].Cells[4].Value.ToString();
                  }
                  else
                  {
                      name = dataGridTransactions.SelectedRows[i].Cells[14].Value.ToString();
                  }
                  if (htmlTable.Contains(name))
                  {
                      continue;
                  }
                  else
                  {
                      htmlTable = htmlTable + ("<tr><td class=style2>" + dataGridTransactions.SelectedRows[i].Cells[2].Value.ToString() + "</td><td class=style2>" + name + "</td><td class=style2>"+cnt+"</td><td class=style2>"+cntOut+"</td><td class=style2>"+cntIn+"</td><td class=style2>"+dateRecent+"</td><td class=style2>"+dropDown+"</td><td class=style2></td></tr>");
                  }
             }

                mailItem.HTMLBody = htmlString+"<br /><br />"+htmlTable+"</table></HTML>";
                mailItem.Display(false);
            }
            else
            {
                MessageBox.Show("Please select a Record Owner to email.",
                                "Error!",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
            }
        }
    }

A well-known fact is that Outlook uses Word for rendering HTML markup. You can read about supported and unsupported HTML elements, attributes, and cascading style sheets properties in the following series of articles in MSDN:

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM