Как я могу отправить таблицу ASP.NET как сообщение электронной почты, а не как вложение? - PullRequest
1 голос
/ 03 мая 2011

У меня есть отчет, созданный через таблицу ASP.NET, и я хочу отправить сообщение электронной почты, содержащее этот отчет, в теле сообщения, а не в виде вложения, включая макет таблицы и ее содержимое.Как это можно сделать в c #?Спасибо, Дов

Ответы [ 4 ]

2 голосов
/ 18 сентября 2011

Я собрал следующий код из статьи на этом сайте http://authors.aspalliance.com/stevesmith/articles/dotnetemailwebsite.asp, которую я нашел через заданный здесь вопрос «Лучший способ создать сложное html-сообщение электронной почты с asp.net, как?», И из этогостатья Как печатать в ASP.NET 2.0 http://www.dotnetcurry.com/ShowArticle.aspx?ID=92. Я использую панель asp.net, чтобы я мог получать только части страницы, а не всю страницу, чтобы вы могли отправить таблицу, в моем случае, безнеобходимость отправить кнопку, которая активирует отправку электронного письма или любой другой части страницы, которую я не хочу отправлять.ПРИМЕЧАНИЕ. Любые свойства стиля для отправляемых элементов управления должны быть установлены непосредственно для элементов управления, а не через cssclass.Это код:

//Here I extract html of the control to be sent
StringWriter stringWrite = new StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
//pnlRpt is an asp.net panel containing the controls to be sent
pnlRpt.RenderControl(htmlWrite);
string htmlStr = stringWrite.ToString();

//Here I send the message whith the html of the table
MailMessage msg = new MailMessage();
msg.From = new MailAddress("EmailOfSender");
msg.To.Add("emailOfReceiver");
msg.Subject = "your subject";
msg.Body = htmlStr;
msg.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient(mailServer);
smtp.Credentials = new System.Net.NetworkCredential(userName, usePass);
smtp.Send(msg);
msg.Dispose();

С этим кодом я отправил таблицу asp.net, сгенерированную и заполненную в фоновом коде, и она отлично работала.

0 голосов
/ 04 сентября 2015

Попробуйте приведенный ниже фрагмент кода

protected void SendEmail(object sender, EventArgs e)
   {
       try
       {
           using (StringWriter sw = new StringWriter())
           {
               using (HtmlTextWriter hw = new HtmlTextWriter(sw))
               {
                  // GridView5.DataBind();
                   GridView5.RenderControl(hw);//this is my gridview name
                   StringReader sr = new StringReader(sw.ToString());
                   MailMessage mm = new MailMessage("gowdhaman92@gmail.com",                    "gowdhaman92@gmail.com");//From and To Mail id's
                   mm.Subject = "Quotation from INDIAN Departmental store,Udumalpet";
                   mm.Body = "INDIAN Departmental store,Udumalpet:<hr />" + sw.ToString();
                   mm.IsBodyHtml = true;
                   SmtpClient smtp = new SmtpClient();
                   smtp.Host = "smtp.gmail.com";
                   smtp.EnableSsl = true;
                   System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
                   NetworkCred.UserName = "gowdhaman92@gmail.com";
                   NetworkCred.Password = "perumalpudur";
                   smtp.UseDefaultCredentials = true;
                   smtp.Credentials = NetworkCred;
                   smtp.Port = 587;
                   smtp.Send(mm);
                   ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Alert message", "alert('mail sent');", true);
               }
           }
       }
       catch (Exception)
       {
           ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Mail not sent!!!');", true);
       }
   }

       public override void VerifyRenderingInServerForm(Control control)
   {
       /* Verifies that the control is rendered */
   }
0 голосов
/ 03 мая 2011

Вы можете отправлять электронную почту в формате HTML в .NET, используя System.Mail.Net

Что-то вроде

//create the mail message
MailMessage mail = new MailMessage();

//set the addresses
mail.From = new MailAddress("me@mycompany.com");
mail.To.Add("you@yourcompany.com");

//set the content
mail.Subject = "This is an email";
mail.Body = "this is a sample body with html in it. <b>This is bold</b> <font color=#336699>This is blue</font>";
mail.IsBodyHtml = true;

//send the message
SmtpClient smtp = new SmtpClient("address of email server possibly localhost");
smtp.Send(mail);

Обратите внимание, что тело - это HTML, поэтому вы можете включить таблицу.Будьте осторожны с форматированием, хотя разные почтовые клиенты поддерживают различное количество HTML, и лучше всего не усложнять.

0 голосов
/ 03 мая 2011

Вы можете сделать http-запрос на страницу asp.net, затем вы можете встроить ответ в текст письма. Вы должны установить формат тела письма как html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...