Добавление таблицы с помощью форм mailto и windows - PullRequest
0 голосов
/ 05 мая 2020

Я хочу открывать почту в теле письма и внутри него. Я хочу создать таблицу и вставить значения в свою модель. Итак, я выполняю следующие действия:

 var mail = $"mailto:test@test.com?subject=ProjectListTest&body={finalString}";

Мой вопрос: как создать таблицу и добавить ее в тело mailto?

Заголовки таблиц: Имя, Клиент

поэтому внутри каждой строки я хочу использовать что-то вроде:

var finalString = string.Empty;
foreach(var customer in CustomerList)
 {
      finalString = finalString + customer.Name + customer.CustomerKey
 }

Можно ли этого добиться? какой правильный формат для создания таблицы в Outlook. С уважением

Ответы [ 2 ]

1 голос
/ 05 мая 2020

p Если таблица будет создана с использованием формата тела письма html, вы можете использовать следующий метод для ее создания:

public string GenerateMailBodyWithTable(List<Customer> customers)
{
    StringBuilder stringBuilder = new StringBuilder();

    stringBuilder.Append($"<html>{ Environment.NewLine }<body>{ Environment.NewLine }");

    if (customers.Count > 0)
    {
        stringBuilder.Append($"<table><tr><th>Name</th><th>Key</th></tr>{ Environment.NewLine }");

        foreach (Customer customer in customers)
        {
            stringBuilder.Append($"<tr><th>{ customer._name }</th><th>{ customer._key }</th></tr>{ Environment.NewLine }");
        }

        stringBuilder.Append($"<table>{ Environment.NewLine }");
    }
    else
    {
        stringBuilder.Append($"<p>No customers<p>{ Environment.NewLine }");
    }

    stringBuilder.Append($"</html>{ Environment.NewLine }</body>");

    return stringBuilder.ToString();
}

После создания тела html вы можете выполнить следующее действие для заполнения почтового тела:

Outlook.Application outlookApp = new Outlook.Application();
        Outlook.MailItem mailMessage = (Outlook.MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);

        mailMessage.HTMLBody = GenerateMailBodyWithTable(customers);
        mailMessage.Display(true);

Не забудьте поместить это выражение using:

using Outlook = Microsoft.Office.Interop.Outlook;
0 голосов
/ 05 мая 2020

Во-первых, вы должны создать свой собственный HTML:

string finalString = "<table><tr><td><b>Name</b></td><td><b>Customer</b></td></tr>";
foreach(var customer in CustomerList)
{
    finalString += "<tr><td>" + customer.Name + "</td><td>" + customer.CustomerKey + "</td></tr>";
}
finalString += "</table>";

Если вы используете WinForms и хотите отправить электронное письмо с этим телом, вы можете использовать MailMessage Class из System.Net.Mail и отправив его с SmtpClient. Таким образом:

MailMessage mail = new MailMessage("from", "mailto", "Subject", finalString);
mail.IsBodyHtml = true; //Important
SmtpClient smtp = new SmtpClient("serverSMTP");
smtp.EnableSsl = USE_SSL;
smtp.Port = YOUR_PORT;
smtp.Credentials = new System.Net.NetworkCredential("email", "password");
smtp.Send(correo);

Если вы хотите смоделировать действие «mailto», вы можете использовать:

string command = $"mailto:test@test.com?subject=ProjectListTest&body={finalString}";  
Process.Start(command); 

С уважением

...