2012-03-27 16 views
10

C'è qualche esempio che possa spiegarmi di inviare e-mail dal mio server localhost? Ho scritto questo esempio ma non funziona l'errore è "Errore nell'invio della posta".Invio di e-mail in asp.net tramite server host locale

SmtpClient smtpClient = new SmtpClient(); 
     smtpClient.Host = "localhost"; 
     smtpClient.Port = 25; 
     smtpClient.EnableSsl = false; 
     smtpClient.Credentials = new NetworkCredential("[email protected]", "secret"); 
     smtpClient.Send("[email protected]", "[email protected]", "Let’s eat lunch!", "Lunch at the Steak House?");//here is the error 

E cosa devo fare in web.config?

+1

Avete configurato SMTP su localhost? – Habib

+0

stai usando localhost e utilizzando le credenziali di yahoo, non penso che funzionerà – Habib

risposta

19

Qui ya go :) localhost-with-aspnet-without-smtp-server

Let me per favore sapere se funziona per voi il modo in cui avete bisogno di.


Il collegamento sopra non funziona, quindi migliorerò la risposta.

A scopo di verifica possiamo usare localhost come questo: How to Test Email Without Configure SMTP in ASP.NET

Nel caso in cui il collegamento va giù di nuovo, in fondo dobbiamo modificare web.config in questo modo:

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="SpecifiedPickupDirectory"> 
     <specifiedPickupDirectory pickupDirectoryLocation="C:\Mails\"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 

e C# codice

MailMessage mailMessage = new MailMessage(); 
    MailAddress fromAddress = new MailAddress("[email protected]"); 
    mailMessage.From = fromAddress; 
    mailMessage.To.Add("[email protected]"); 
    mailMessage.Body = "This is Testing Email Without Configured SMTP Server"; 
    mailMessage.IsBodyHtml = true; 
    mailMessage.Subject = " Testing Email"; 
    SmtpClient smtpClient = new SmtpClient(); 
    smtpClient.Host = "localhost"; 
    smtpClient.Send(mailMessage); 

In questo modo verrà stampato un file nella directory desiderata.

+0

Sidenote: Il 'System.Web.Mail.MailMessage' è ora deprecato. È possibile utilizzare 'System.Net.Mail.MailMessage'. – rst

2

È necessario specificare le impostazioni per il server SMTP in web.config. Ci sono diversi esempio online (ad esempio this)

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="Network" from="[email protected]"> 
      <network host="smtp.mail.com" userName="[email protected]" password="pwd" port="25"/> 
     </smtp> 
    </mailSettings> 
</system.net> 

Poi si può semplicemente utilizzare la classe SmtpClient da inviare:

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.EnableSsl = true; 

MailMessage msg = new MailMessage(); 
msg.To.Add("[email protected]"); 
msg.Subject = "test"; 
msg.Body = "test body"; 

smtpClient.Send(msg); 
+0

Non è necessario alcun server SMTP aggiuntivo ...;) – walther

+0

Accetto se è installato su localhost. che dire se stai usando un provider esterno (ad esempio Rackspace)? – Strillo

2

qui è il campione:

public static void SendMailMessage(string from, string to, string bcc, string cc, string subject, string body) 
{ 
    // Instantiate a new instance of MailMessage 
    MailMessage mMailMessage = new MailMessage(); 

    // Set the sender address of the mail message 
    mMailMessage.From = new MailAddress(from); 
    // Set the recepient address of the mail message 
    mMailMessage.To.Add(new MailAddress(to)); 

    // Check if the bcc value is null or an empty string 
    if ((bcc != null) && (bcc != string.Empty)) 
    { 
     // Set the Bcc address of the mail message 
     mMailMessage.Bcc.Add(new MailAddress(bcc)); 
    }  // Check if the cc value is null or an empty value 
    if ((cc != null) && (cc != string.Empty)) 
    { 
     // Set the CC address of the mail message 
     mMailMessage.CC.Add(new MailAddress(cc)); 
    }  // Set the subject of the mail message 
    mMailMessage.Subject = subject; 
    // Set the body of the mail message 
    mMailMessage.Body = body; 

    // Set the format of the mail message body as HTML 
    mMailMessage.IsBodyHtml = true; 
    // Set the priority of the mail message to normal 
    mMailMessage.Priority = MailPriority.Normal; 

    // Instantiate a new instance of SmtpClient 
    SmtpClient mSmtpClient = new SmtpClient(); 
    // Send the mail message 
    mSmtpClient.Send(mMailMessage); 
} 

e chiamare la funzione :

SendMailMessage("[email protected]", "[email protected]", "[email protected]", "[email protected]", "Sample Subject", "Sample body of text for mail message") 
+0

Ho ottenuto 'System.InvalidOperationException: l'host SMTP non è stato specificato. – mattalxndr

1
bool ret = true; 

      try 
      { 
       string _smtpServer = ConfigurationSettings.AppSettings["appEmailHost"]; 

       Web.Mail.Mail mail = new Web.Mail.Mail(_smtpServer,   
     System.Web.Mail.MailFormat.Html, System.Web.Mail.MailPriority.Normal); 
       mail._From = [email protected]; 
       mail._To = [email protected]; 
       mail._Subject = subject; 

       mail._Body = body; 
       mail.SendMail(); 
       ret = true; 
      } 
      catch(Exception exp) 
      { 
       _GravaErro(exp); 
       ret = false; 
      } 

      return ret; 
Problemi correlati