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:
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>
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".
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>