2010-06-24 7 views
6

Scenario:Devo utilizzare .NET (System.Net.Mail) per inviare in batch le email delle mie applicazioni Web o SQL (msdb.sp_send_dbmail)?

1) La mia domanda è un NET 3.5 C# Web App e il database è SQL 2008.

2) email saranno nella regione di 100 a 1000 al giorno e sono attivati da varie interazioni utente web con l'app.

3) La maggior parte delle e-mail conterrà allegati tra 50 e 5 MB. Alcune e-mail saranno HTML e alcune saranno in testo normale.

4) Tutti gli allegati verranno ricavati da una directory sul server Web.

5) Il server SQL è una macchina separata per il server Web. Tutte le connessioni SQL dall'applicazione sono tramite accessi SQL non Windows Authentication.

6) Per una soluzione scalabile, le e-mail da inviare verranno accodate in una tabella di database pronta per un processo batch da prelevare. Le e-mail non riuscite dovrebbero essere ripetute fino a 4 volte.

Dilemma:

io non sono sicuro se scrivere una soluzione server Web per inviare messaggi di posta elettronica (ad esempio, un servizio di Windows, che i sondaggi le e-mail pronto per l'invio) o forse per utilizzare SQL Mail banca dati che è facile per impostare e utilizzare e non richiede molto sviluppo.

Il fatto che gli allegati si trovino sul server Web mi suggerisce di utilizzare una soluzione di server Web, ma sarei interessato a vedere se ho perso qualcosa.

+0

qualsiasi soluzione finale con un codice completo di esempio su di esso? – Kiquenet

risposta

2

Innanzitutto, fai attenzione a inviare migliaia di email al giorno a raffiche. Questo è un buon modo per ottenere la lista nera da altri server di posta o persino dal tuo provider Internet. In secondo luogo, consiglierei di andare alla routine .NET. Questo problema sa di un servizio. Anche se non lo costruisci oggi come servizio, potresti volerlo fare in futuro. Con .NET, puoi refactoring la tua soluzione per inviare e-mail in parallelo o accedere alla coda in un modo multi-thread. Tutto ciò sarebbe difficile in SQL Server. In breve, .NET offre la possibilità di creare una soluzione più estensibile rispetto a SQL Server.

3

Penso che tu abbia risposto alla tua stessa domanda. Dato che hai scelto di accodare le e-mail nel database IMO, ci sarebbe poco vantaggio nel creare una soluzione gestita sul server web per inviare le e-mail.

L'unica cosa che considero è il fatto che stai memorizzando gli allegati sul server web, questo significa che ci sarebbe più traffico di rete tra server web e database che se il server web inviasse le e-mail (supponendo che funzionino su diversi server fisici). Utilizzando i tuoi dati che potrebbero essere 5 GB di traffico al giorno in allegati. Tuttavia, vorrei andare con la soluzione DB e testarlo rigorosamente per vedere se il traffico diventa un problema. Se è così, non hai perso molto tempo dev sulla soluzione DB.

+1

Sarei d'accordo, mantieni la semplicità. – ChrisF

+0

Questa è sicuramente un'opzione che vorrei testare. Il mio problema è che non sono nemmeno sicuro che il server del database abbia le autorizzazioni per i file sul server Web, poiché la comunicazione tra i 2 server avviene tramite login SQL e non windows. – iandayman

+0

Dipenderà dall'account Windows Lo stesso server SQL è in esecuzione. –

2

Vorrei andare con .NET invece di inviare e-mail dal DB. Anche l'invio di e-mail in .NET è semplicissimo e non richiede alcun tipo di installazione o di sviluppo.

Su una nota correlata, non ho idea del motivo per cui SQL Server può inviare e-mail, in quanto questa funzionalità non sembra adattarsi al modello di archiviazione dei dati. SQL Server esegue anche il rendering 3D?

+2

+1 per il rendering 3d lol, vorrei prendere in considerazione che la funzione email è probabilmente in grado di supportare amministratori/sviluppatori SQL per implementare facilmente qualsiasi tipo di avviso via email senza richiedere alcuna conoscenza della programmazione al di fuori del linguaggio di query che già conoscono bene – GenEric35

Problemi correlati