2009-03-31 10 views
8

Da quello che ho capito non c'è un server SMTP in IIS su Vista. Sto lavorando a un progetto che richiederà l'invio di e-mail. Mi piacerebbe iniziare con alcuni semplici prototipi sulla mia scatola di sviluppo che esegue Vista Ultimate. Non sono connesso a una rete aziendale in cui posso semplicemente utilizzare un server di Exchange da qualche parte.Come posso impostare smtp su Vista in modo da poter utilizzare System.Net.Mail?

Mi rendo conto che ci sono diversi server smtp che posso installare, ma non sono sicuro di cosa fare dopo averlo installato. So come scrivere il codice per inviare l'e-mail, ma non so quale tipo di configurazione deve essere fatto per utilizzare il server smtp.

Quello che mi piacerebbe è una chiara descrizione di cosa fare una volta installato un server smtp sulla mia scatola Vista.

Grazie!

UPDATE: ho scaricato questo server smtp: http://softstack.com/freesmtp.html

Ecco ciò che il mio codice è simile:

class Program 
{ 
    static void Main(string[] args) 
    { 
     MailMessage message = new MailMessage();  
     message.From = new MailAddress("[email protected]");  
     message.To.Add(new MailAddress("[email protected]"));    
     //message.To.Add(new MailAddress("[email protected]"));  
     //message.CC.Add(new MailAddress("[email protected]"));  
     message.Subject = "This is my subject";  
     message.Body = "This is the content";  
     SmtpClient client = new SmtpClient("localhost");  
     client.Send(message);  
     Console.ReadLine();  
    } 
} 

Quando ho questo server smtp esecuzione e eseguo la mia console app, le mani sul client .invia linea. Il server SMTP è simile al seguente:

http://screencast.com/t/2B7jv0bE14

Dopo un po 'i tempi client.send fuori.

Qualche idea cosa sta succedendo ora?

Grazie!

risposta

9

Come sapete, SMTP non viene più fornito con Vista (che è una delle mie più grandi lamentele su Vista). Come già sai, ci sono molte opzioni là fuori, e se hai trovato una buona libera, pubblica un link ad essa. Il modo in cui lo configurerai dipenderà probabilmente dal server che installi.

Ho giocato con alcuni server smtp di prova, e tutti quelli che ho usato hanno iniziato ad ascoltare le porte SMTP standard sull'indirizzo IP di loopback. Credo che questo sia l'impostazione predefinita di MailSettings e non dovrebbe richiedere alcuna modifica.

Non ho più alcun server SMTP e sto utilizzando la modalità Directory di prelievo. Ciò fa sì che la libreria di posta elettronica generi un file che posso quindi controllare.

Per configurare questo uso il seguente nel file di configurazione:

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

Se si desidera configurare per la connessione alla porta 25 sul vostro host locale si farebbe questo per la sezione SMTP:

<smtp deliveryMethod="Network"> 
    <network defaultCredentials="true" host="localhost" port="25"/> 
</smtp> 

Modifica

Terry ha fatto una buona domanda sull'utilizzo della posizione di rilascio. Lo uso solo per i test, dato che il nostro server di produzione ha un server SMTP al quale mi collego e invio l'email; tuttavia, alcuni server SMTP possono essere configurati per guardare una directory e raccogliere e inviare qualsiasi contenuto.

Non penso che questa funzione sia stata pensata per essere utilizzata solo per i test, ma funziona bene. I file che vengono generati possono essere aperti in vari client di posta in modo da poter vedere come li renderanno. Credo che siano file .eml ma non riesco a ricordare.

+0

Quindi questa tecnica non invia email, giusto? E 'usato solo per i test? –

+0

grazie :-) Sto ancora amando questa soluzione – JoshBerke

0

È possibile trovare un server SMTP molto di base codificato in C# .NET in stickymailserver:

Sticky Mail Server è un basso contenuto di interazione SMTP Honeypot progettato per emulare un inoltro della posta SMTP. Cattura e registra i messaggi dei probe e i mailing di massa e li salva per analisi successive.

0

È possibile utilizzare un server SMTP ospitato esternamente. Ho scoperto che un sacco di sistemi di posta elettronica bloccheranno l'accesso se il server SMTP di origine si trova dietro un indirizzo IP dinamico (come la maggior parte dei sistemi residenziali).

Ho dovuto farlo di recente.

SmtpClient smtp = new SmtpClient("smtp.myserver.com"); 
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 
smtp.Credentials = new System.Net.NetworkCredential("Username", "Password"); 

Utilizzando l'evento "SendCompleted", è possibile inviare l'e-mail in background senza ritardare l'applicazione.

0

@JoshBerke

Ho provato con l'opzione in basso, ma ricevo "Impossibile ottenere directory di prelievo IIS". So che sto indicando una directory esistente, ci sono permessi che devo impostare sulla directory?

<smtp deliveryMethod="SpecifiedPickupDirectory"> 
    <specifiedPickupDirectory pickupDirectoryLocation="c:\maildrop"/> 
</smtp> 
Problemi correlati