katela Ответов: 2

Использование ASP.NET чтобы отправить HTML-форму.


Привет ребята
пожалуйста помогите мне я не могу отправить электронное письмо asp.net мой поставщик услуг не разрешает использовать smtp, поэтому я должен разместить свою форму на странице, которую они мне дали, чтобы они могли переслать ее на мою электронную почту.
у меня есть что-то вроде этого:

<form method="post" action="http://their_page.com/mailto/mailto.pl">
<input type="hidden" name="followup-page" value="http://my_follo_page.com/mailto/confirm.html">
<input type="hidden" name="recip" value="email@domain.co.za">
<input type="hidden" name="subj" value="Feedback Form"> 
<input type="hidden" name="from" value="email@domain.co.za"> 
<input type="hidden" name="body"


Как я могу сделать это в ASP.net, мне это нужно, потому что мой сайт разработан в ASP?
когда я делаю это html, он работает нормально, но не работает с ASP.NET страница (ничего не происходит, когда я нажимаю кнопку Отправить), и я не могу использовать HTML из-за внешнего вида, я не могу использовать ASP.NET мастер-страница с html-страницей.


Кроме того, как я могу изменить свою страницу register.asp, чтобы отправить электронное письмо с подтверждением, когда кто-то зарегистрируется? я знаю только, как отправлять электронную почту с помощью smtp, как я могу разместить имя пользователя и адрес электронной почты на этой странице сервера? это мой реестр.aspx-файл.в CS:
namespace WebApplication1.Account
{
    public partial class Register : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            RegisterUser.ContinueDestinationPageUrl = Request.QueryString["ReturnUrl"];
        }
        protected void RegisterUser_CreatedUser(object sender, EventArgs e)
        {
           MembershipUser newUser = Membership.GetUser(RegisterUser.UserName);
            Guid newUserID = (Guid)newUser.ProviderUserKey;
            string urlBase = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath;
            string verifyUrl = "VerifyNewUser.aspx?ID=" + newUserID.ToString();
            string fullPath = urlBase + verifyUrl;
            string appPath= Request.PhysicalApplicationPath;
           StreamReader sr = new StreamReader(appPath + "EmailTemplates/VerifyNewUser.txt");
           MailMessage message = new MailMessage();
            message.IsBodyHtml = true;
           message.From = new MailAddress("studentcompanionsa@gmail.com","Student Companion");
            message.To.Add( new MailAddress(RegisterUser.Email));
           message.CC.Add(new MailAddress("membership@studentcompanion.co.za"));
            message.Subject = "New User Registration";
            message.Body = sr.ReadToEnd();
            sr.Close();
            message.Body = message.Body.Replace("<%UserName%>", RegisterUser.UserName);
            message.Body = message.Body.Replace("<%VerificationUrl%>", fullPath);
            SmtpClient client = new SmtpClient();
           client.EnableSsl = true;
           client.Send(message);
            //FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);
            string continueUrl = RegisterUser.ContinueDestinationPageUrl;
            if (String.IsNullOrEmpty(continueUrl))
            {
                //continueUrl = "~/";
                continueUrl = "~/RegisterEmailNotification.aspx";
            }
            Response.Redirect(continueUrl);
            
        }
    }
}




БОЛЬШОЕ СПАСИБО!.

David_Wimbley

Ваш вопрос не имеет смысла. Не могли бы вы быть немного более ясными? Для уточнения всего этого вам нужно сделать следующее в Asp.Net-что?

Форма, которая отправляет сообщения со значениями, чтобы вы могли затем отправить эти значения по электронной почте в свой почтовый ящик?

katela

моя веб-хостинговая компания перешлет форму на мой почтовый ящик.
они не разрешают smtp.

jkirkerx

Просто использовать HTML кнопка "отправить" вместо кнопки объект ASP.NET

katela

а HTML-код кнопки "Отправить" работает, когда внутри HTML-страницы, но, кажется, не работает, когда я положил его внутри страницы asp.net

David_Wimbley

Можете ли вы улучшить свой вопрос, включив в него весь фрагмент кода, потому что вы постоянно говорите, что он работает внутри html-страницы, но не внутри HTML-страницы? asp.net страница...HTML есть HTML есть HTML. Вы не можете иметь страницу без HTML, это не имеет значения, если вы делаете webforms, mvc, coldfusion, php, perl...форма есть форма есть форма.

Можете ли вы предоставить полный фрагмент кода вашей проблемы, то, что вы говорите, не имеет смысла.

katela

Хорошо, когда в моем обозревателе решений я щелкаю правой кнопкой мыши и добавляю новую "HTML-страницу" и помещаю этот код, он работает:

<html xmlns="http://www.w3.org/1999/xhtml">
<голова>
в <название&ГТ;просьба о помощи&ЛТ;/название&ГТ;
</head>
<тело>
<div id="контент">


Отправить запрос на получение помощи по электронной почте


&ЛТ;форма метод="сообщение" действие="http://cgi-bin.myhost.co.za/mailto/mailto.pl"&ГТ;
<div>
Ваше имя:
<input type="text" name="recip" />
</div>

<div>
Ваш электронный адрес:
<input type="text" name="from" />
</div>
<div style="width: 688px">
Предмет:
<input type="text" name="subj" />
</div>

<div>
Подробнее о вашей проблеме: <br />
в <textarea с именем="тело" столбцов="45" строк="4"&ГТ;&ЛТ;/textarea в&ГТ;
</div>

<div>
в <тип входного="представить" значение="отправить" /&ГТ;
</div>




</форма>
</div>
</body>
</html>


Когда я нажимаю кнопку Отправить, я получаю это письмо. моя веб-хостинговая компания пересылает письмо в мой почтовый ящик.

Но проблема заключается в том, что когда я пишу один и тот же код в ASP.NET страница (страница с расширением aspx) внутри двух тегов "html", она не работает, форма ничего не делает.
Единственная причина, по которой я хочу использовать страницу ASPX, - это моя главная страница, я хочу, чтобы эта страница выглядела также, как и другие страницы (меню, Ссылки,... из-за главной страницы)

Спасибо

David_Wimbley

Это глупый вопрос...вы знаете, что ваша форма отправляется в скрипт perl, не так ли? &ЛТ;форма метод="сообщение" действие="http://cgi-bin.myhost.co.za/mailto/mailto.pl"и GT;...Вероятно, именно поэтому он не работает.

katela

Я думаю, что именно поэтому это не работает, но я не эксперт.
Пожалуйста, помогите мне решить, как мне это сделать.

katela

может быть, именно поэтому он не работает.
Я не эксперт, пожалуйста, помогите.
Спасибо

David_Wimbley

Ладно, теперь я начинаю понимать...ура.

Итак у вас есть форма

<form method="POST" action="URL-адрес файла, с которым вы работаете">

метод может быть POST/GET. Прямо сейчас вы ищете Perl скрипт "http://cgi-bin.myhost.co.za/mailto/mailto.pl".

Предполагая, что ваш хост-это то же самое, вы должны ссылаться на ссылку, которая выглядит следующим образом http://cgi-bin.myhost.co.za/SendMail.aspx-да.

Это предполагает, что тот бит кода, который вы опубликовали, который является C#, на самом деле находится в файле под названием SendMail.aspx. Поэтому, как только вы разместите свое значение в SendMail.aspx, вы можете делать с этими значениями все, что вам нужно...будь то сохранение его в файл, базу данных или что-то еще.

Честно говоря я никогда не слышал чтобы хозяин не разрешал smtp...so чтобы действительно решить эту проблему, вам следует обзавестись новым хостинг-провайдером.

jkirkerx

Если я правильно помню, то asp.net объект button и Imagebutton-это кнопки, но они не используют submit bahavior, если не выбран параметр "Use Submit Bahavior", поэтому они действуют как кнопка отправки HTML.

Использование, если тег формы, в asp.net если отличается то html или php. Например, в php вы можете иметь несколько тегов форм с выделенными кнопками отправки внутри, которые будут делать разные вещи и выполнять поведение по умолчанию, когда вы можете нажать клавишу enter, чтобы отправить форму.

Asp.Net это не так, у вас может быть только 1 тег формы и 1 поведение отправки, и чтобы запрограммировать клавишу enter, вы должны обернуть ее в asp.net панель и используйте атрибут кнопки по умолчанию.

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

katela

Танки, похоже, это единственный способ сделать это.
Я не эксперт в C#, особенно в том, что касается размещения данных в других формах. не могли бы вы привести мне короткий пример su или функции, которая может собирать данные из моих входных данных и отправлять их в другую форму?
спасибо, я ценю это.

2 Ответов

Рейтинг:
1

jkirkerx

Чтобы помочь в первом вопросе, я думаю, что это будет что-то вроде этого.

Прошло много времени с тех пор, как я писал форму для отправки в другую форму, это было на PHP, но это моя версия того, как это сделать в asp.net, и сохраните представление ключа enter.

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

Я воспользовался преимуществами 4.0 clientIDMode, установив элементы управления как статические, чтобы поддерживать правильные значения имени и идентификатора.

<form id="form1" runat="server">
<div>
    <asp:panel id="panel_emailSubmit" runat="server" style="width: 350px; text-align: left;" defaultbutton="bt_Submit" clientidmode="Static" xmlns:asp="#unknown">
        <table cellpadding="0" cellspacing="0" border="0" style="width: 350px;">
            <tr>
                <td style="width: 350px; height: 96px; text-align: left;">
                    <asp:textbox runat="server" id="txt_recip" clientidmode="Static">email@domain.co.za</asp:textbox><br />
                    <asp:textbox runat="server" id="txt_subj" clientidmode="Static">Feedback Form</asp:textbox><br />
                    <asp:textbox runat="server" id="txt_from" clientidmode="Static">email@domain.co.za</asp:textbox><br />
                    <asp:textbox runat="server" id="txt_body" clientidmode="Static"></asp:textbox><br />
                </td>
            </tr>
            <tr>
                <td style="width: 350px; height: 46px; text-align: left;">
                    <asp:button runat="server" text="Button" id="bt_Submit" postbackurl="http://their_page.com/mailto/mailto.pl" clientidmode="Static" />
                </td>
            </tr>
            <tr>
                <td style="width: 350px; height: 0px; text-align: left;">
                    <input type="hidden" name="followup-page" value="http://my_follo_page.com/mailto/confirm.html" />
                </td>
            </tr>
        </table>
    </asp:panel>
</div>
</form>


Рейтинг:
0

jkirkerx

Чтобы помочь в первом вопросе, я думаю, что это будет что-то вроде этого.

Прошло много времени с тех пор, как я писал форму для отправки в другую форму, это было на PHP, но это моя версия того, как это сделать в asp.net, и сохраните представление ключа enter.

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

Я воспользовался преимуществами 4.0 clientIDMode, установив элементы управления как статические, чтобы поддерживать правильные значения имени и идентификатора.

<![CDATA[<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>]]>