2013-03-07 3 views
0

На моем веб-сайте ASP.Net C# у меня была форма заказа, которую я хочу отправить по электронной почте, отправив ее. Элементами формы являются HTML и вычисления выполняются JavaScript на стороне клиента, и в нем много элементов формы.Как отправить HTML-форму в asp.net C# по электронной почте?

Я хочу, чтобы вы могли отправить форму и ее заполненное содержимое пользователем, как PDF или JPG по электронной почте.

Возможно, форма должна быть записана как снимок с клиентской стороны в виде изображения или файла печати, а затем, возможно, файл можно отправить с сервера по электронной почте.

Я был бы очень признателен, если вы дадите мне практическое описание решения. Вот некоторые части кода, как образец:

<div id="cblDomain"> 
    <input id="cblDomain_1" value="10" onchange="subsumDomain()" type="checkbox" name="cblDomain" checked="checked"><label for="cblDomain_1">com - 10</label><br> 
    <input id="cblDomain_2" value="10" onchange="subsumDomain()" type="checkbox" name="cblDomain"><label for="cblDomain_2">net - 10</label><br> 
    <input id="cblDomain_3" value="5" onchange="subsumDomain()" type="checkbox" name="cblDomain"><label for="cblDomain_3">info - 5</label><br> 
    <input id="cblDomain_4" value="10" onchange="subsumDomain()" type="checkbox" name="cblDomain"><label for="cblDomain_4">me - 10</label> 
    </div> 

<select name="ddlDomainPeriod" onchange="subsumDomain()" id="ddlDomainPeriod"> 
    <option value="1">1 yr</option> 
    <option value="2">2 yrs</option> 
    <option value="3">3 yrs</option> 
    <option value="4">4 yrs</option> 
    <option value="5">5 yrs</option> 
</select> 
<div name="sum" id="sumDomain">10</div> 

<script type="text/javascript"> 
    function subsumDomain() { 
     var _sum = 0; 
     var _cblDomain = document.getElementsByName('cblDomain'); 
     for (i = 0; i < _cblDomain.length; i++) { 
      if (_cblDomain[i].checked == true) 
       _sum += Number(_cblDomain[i].value); 
     } 
     var _domainPeriod = Number(document.getElementById('ddlDomainPeriod').options[document.getElementById('ddlDomainPeriod').selectedIndex].value); 
     document.getElementById('sumDomain').innerHTML = moneyConvert(_sum * _domainPeriod); 

     subTotal(); 
    } 

    function subsumHost() { 
     var _hostPrice = Number(document.getElementById('ddlHost').options[document.getElementById('ddlHost').selectedIndex].value); 
     var _hostPeriod = Number(document.getElementById('ddlHostPeriod').options[document.getElementById('ddlHostPeriod').selectedIndex].value); 
     _hostDiscount = 0; 
     if (_hostPeriod > 1) 
      _hostDiscount = (_hostPrice * _hostPeriod) * 0.2; 
     document.getElementById('sumHost').innerHTML = moneyConvert((_hostPrice * _hostPeriod) - _hostDiscount); 

     subTotal(); 
    } 
</script> 

Любая помощь будет высоко ценится (^_^)

KARDO

ответ

0

Если вы хотите, чтобы захватить ваши HTML форму и создать PDF , мой любимый инструмент - wkhtmltopdf. Вы должны были бы установить это на своем сервере (я бы хотел узнать, нашли ли другие библиотеки .net для wkhtmltopdf!:]).

После установки его командной строки очень просто:

wkhtmltopdf www.myhomepage.com output.pdf 

Вызов его из .net просто тоже пример: Calling wkhtmltopdf to generate PDF from HTML

Есть также .net библиотеки iTextSharp, которые можно использовать для создания PDF и другие статические типы вывода.

0

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

Если вы действительно хотите сделать PDF-документ, вам нужно будет найти достойную библиотеку, как уже было предложено.

Ну вот как вы отправляете электронное письмо. Мне нравится создавать повторно используемый класс электронной почты. Вам не обязательно, если это вам не подходит. Но эй, если ты собираешься создать электронное письмо, почему бы не сделать его объектом?

using System.Net.Mail; 
public class Email 
    { 

     public MailAddress From { get; set; } 
     public MailAddress To { get; set; } 
     public string Password { get; set; } 
     public string Subject { get; set; } 
     public string Body { get; set; } 
     public string Host { get; set; } 
     public int Port { get; set;} 
     public List<Attachment> attachmentsList = new List<Attachment>(); 


     public void send() 
     { 
      //send email 
      var smtp = new SmtpClient 
      { 
       Host = Host, 
       Port = Port, 
       EnableSsl = true, 
       DeliveryMethod = SmtpDeliveryMethod.Network, 
       Credentials = new NetworkCredential(From.Address, Password), 
       Timeout = 120000 //2mins 
      }; 

      MailMessage message = new MailMessage(From.Address, To.Address); 
      message.Subject = Subject; 
      message.Body = Body; 
      message.IsBodyHtml = true; 

      foreach(Attachment attachment in attachmentsList){ 
       if (attachment != null) 
       { 
        message.Attachments.Add(attachment); 
       }     
      } 

      try 
      { 
       smtp.Send(message); 
      } 
      catch(Exception e){ 

       throw e; 
      } 
     } 
    } 

Затем вам нужно создать свой pdf-файл или что-то другое, что вы выберете. Сохраните его на своем HDD где-нибудь. создать свою электронную почту и прикрепить файл (ы) в качестве вложения электронной почты (или просто отправить HTML тело. Используйте StringReplace(), чтобы заменить значения в шаблоне электронной почты. (#price #address #companyname и т.д.).

Email newMail = new Email(); 

newMail.From = new MailAddress("[email protected]", "Your Name"); 
newMail.Password = "your outgoing mail password"); 
newMail.To = new MailAddress("[email protected]", "Recipient Name"); 
newMail.Subject = "Your Subject"; 
newMail.Body = "Your email body"; 
newMail.Host = smtp.example.com; 
newMail.Port = 123; 

//add the attachments (example) 
foreach (string fileLocation in AttachmentsList) 
{ 
newMail.attachmentsList.Add(new Attachment(fileLocation)); 
} 

newMail.send(); 

Я надеюсь, что это поможет в некотором роде ...

+0

Спасибо за ваш ответ :) Это не совсем то, что я ожидал, но это очень приятное и простое в использовании решение для электронной почты. – Kardo

Смежные вопросы