Avendo incontrato inrisolti problemi con la mail di PHP, stavo provando a usare il sistema proposto da Microsoft.
Il problema è che mi serve inviare a un indirizzo non pubblicato, nome, indirizzo email, testo e (eventualmente) un allegato di chi scrive.
Ho visto che con questo metodo (pagine aspx) occorre fare upload degli alegati sul server, per cui, ecco uno schema del mio form:
La mia scarsa conoscenza del metodo e del linguaggio, non mi ha fino ad ora permesso di liberarmi di quel "onSubmit = "return Tocheck(this)", che fa riefrimento a uan routine Jscript che dice semplicemente "non è stato allegato alcun file".codice:<form method = "post" name = "frmemail" runat = "server" enctype="multipart/form-data" onSubmit = "return Tocheck(this)"> <span style="color:red">*</span> Nome o pseudonimo: <asp:TextBox Columns="60" ID = "txtName" runat = server></asp:TextBox> </p> <span style="color:red">*</span> E-Mail obbligatorio: <asp:TextBox Columns="60" ID = "txtFrom" Runat =server></asp:TextBox></p> </p> Testo: <asp:TextBox Columns="46" ID="txtMsg" Rows="5" runat="server" Text="Nome e Cognome:" TextMode="MultiLine">Nome e cognome:</asp:TextBox> </p> Allega file: <input name="" type = "file" id = "txtFile" size="40" runat = "server"> </p> </p> <div style="width:200px; float:left"></div> <div align="center" style="float:left"> <asp:Button Runat = server ID = "btnSubmit" Text = "Invio" OnClick = "btnSubmit_Click"></asp:Button></p></div> </form>
Perché il problema è prorpio questo: fare in modo che se non è allegato un file, parta la posta senza file.
Ecco qui la parte C#, più il famigerato Jscript di cui sopra:
codice:<script language = "javascript"> function Tocheck(frmemail) { if(frmemail.txtFile.value == "") { alert("Non è stato allegato alcun file"); frmemail.txtFile.focus(); return(false); } } </script> <%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Mail" %> <%@ Import Namespace="System.IO" %> <script runat="server"> string txtSubject = "Il soggetto lo scelgo io"; string txtTo = "io@mioserver.it"; void btnSubmit_Click(Object sender, EventArgs e) { MailMessage mail = new MailMessage(); mail.From = txtFrom.Text; /* qui si dovrebbe trovare il modo di creare qualcosa tipo "pippo <pippo@suoserver.it>" usando txtName.Text */ mail.To = txtTo; mail.Subject = txtSubject; mail.Body = txtMsg.Text; mail.BodyFormat = MailFormat.Html; // attualmente è obbligatorio mettere un allegato ... string strdir = "D:\\inetpub\\webs\\public\\temp\\"; string strfilename = Path.GetFileName(txtFile.PostedFile.FileName); txtFile.PostedFile.SaveAs(strdir+strfilename); mail.Attachments.Add(new MailAttachment(strdir+strfilename)); // questo gruppo dovrebbe diventare condizionale: se esiste allegato esegui, altrimenti no! try { SmtpMail.Send(mail); Response.Redirect("ok.asp"); } catch(Exception ex) { Response.Redirect("ko.asp"); } // Uploaded file deleted after sending e-mail File.Delete(strdir+strfilename); } </script>

Rispondi quotando