sending email in .Net

E

Eduardo Rosa

ok then...
I wrote queue not for ornament, because I've work a lot with ASP and it need
third-party component to do that.
I was hurry and maybe should wrote the word in uppercase because what I
found in google it most 3rd-party too. So I'll ask again, most precise ok
Juan?

A loop with a many e-mail list works in ASP.Net, unlike classic ASP?
Somebody know how I queue e-mail in ASP.Net without 3rd-party component?
 
J

Juan T. Llibre

Eduardo,

when you say "queue", do you mean getting a list of email
addresses from a database and sending emails to all of them ?

If so, here's a sample :

<%@ Page Language="VB" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Web.Mail" %>
<script runat="server">

Sub Page_Load(Src as object, E as EventArgs)

Dim P, U, Em As String
Dim connectionString As String = "server='YourSQLServerName'; trusted_connection=true; database='YourSQLServerDatabase"
Dim dbConnection As IDbConnection = New SqlClient.SqlConnection(connectionString)

Dim queryString As String = "SELECT UserName, Password, Email FROM Users"
Dim dbCommand As IDbCommand = New SqlClient.SqlCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection

dbConnection.Open
Dim dataReader As IDataReader = dbCommand.ExecuteReader(CommandBehavior.CloseConnection)

While dataReader.Read()
U = dataReader("Username").ToString()
P = dataReader("Password").ToString()
Em = dataReader("Email").ToString()

' Build a MailMessage
Dim mail As System.Web.Mail.MailMessage = New System.Web.Mail.MailMessage
mail.From = "(e-mail address removed)"
mail.To = Em
mail.Subject = "Your Email's subject."
mail.BodyFormat = System.Web.Mail.MailFormat.Html

mail.Body="Hello, " & U & ".<p>Your Username is " & U & " and your password is " & P & ".<p>
And the rest of your HMTL message goes here..."

System.Web.Mail.SmtpMail.SmtpServer = "your.smtp.server"
System.Web.Mail.SmtpMail.Send(mail)
End While

End Sub
</script>
<html>
<head>
</head>
<body>
</body>
</html>

When you open that page, an email with the contents you specify
will be sent to every email address in the Email column in the Users
table in your SQL Server Database.
 
E

Eduardo Rosa

Using classic ASP that page will execute until all e-mail had be sended, if that number e-mails are big the script can execed the timeout, some components give to server manage the e-mail sendind, so the script runs fast. My doubt is: some class in default .Net library can do that or I need a 3rd party?

exemple of components for classic ASP

AspQMail (http://www.serverobjects.com/comp/AspQMail.htm)

ASPEmail (www.persits.com), por exemplo o o método queue:
Enables message queuing.
False by default. If set to True, specifies that a subsequent call to Send will place the message in a message queue to be processed by EmailAgent.
This is a premium feature.


thanks a lot Juan

"Juan T. Llibre" <[email protected]> escreveu na mensagem Eduardo,

when you say "queue", do you mean getting a list of email
addresses from a database and sending emails to all of them ?

If so, here's a sample :

<%@ Page Language="VB" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Web.Mail" %>
<script runat="server">

Sub Page_Load(Src as object, E as EventArgs)

Dim P, U, Em As String
Dim connectionString As String = "server='YourSQLServerName'; trusted_connection=true; database='YourSQLServerDatabase"
Dim dbConnection As IDbConnection = New SqlClient.SqlConnection(connectionString)

Dim queryString As String = "SELECT UserName, Password, Email FROM Users"
Dim dbCommand As IDbCommand = New SqlClient.SqlCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection

dbConnection.Open
Dim dataReader As IDataReader = dbCommand.ExecuteReader(CommandBehavior.CloseConnection)

While dataReader.Read()
U = dataReader("Username").ToString()
P = dataReader("Password").ToString()
Em = dataReader("Email").ToString()

' Build a MailMessage
Dim mail As System.Web.Mail.MailMessage = New System.Web.Mail.MailMessage
mail.From = "(e-mail address removed)"
mail.To = Em
mail.Subject = "Your Email's subject."
mail.BodyFormat = System.Web.Mail.MailFormat.Html

mail.Body="Hello, " & U & ".<p>Your Username is " & U & " and your password is " & P & ".<p>
And the rest of your HMTL message goes here..."

System.Web.Mail.SmtpMail.SmtpServer = "your.smtp.server"
System.Web.Mail.SmtpMail.Send(mail)
End While

End Sub
</script>
<html>
<head>
</head>
<body>
</body>
</html>

When you open that page, an email with the contents you specify
will be sent to every email address in the Email column in the Users
table in your SQL Server Database.
 
J

Juan T. Llibre

re:
if that number e-mails are big the script can execed the timeout

You can increase the timeout, so that the page has time to complete.
Check web.config's <httpRuntime executionTimeout="90" ... />

and set it to however long you need.







Using classic ASP that page will execute until all e-mail had be sended, if that number
e-mails are big the script can execed the timeout, some components give to server manage
the e-mail sendind, so the script runs fast. My doubt is: some class in default .Net
library can do that or I need a 3rd party?

exemple of components for classic ASP

AspQMail (http://www.serverobjects.com/comp/AspQMail.htm)

ASPEmail (www.persits.com), por exemplo o o método queue:
Enables message queuing.
False by default. If set to True, specifies that a subsequent call to Send will place
the message in a message queue to be processed by EmailAgent.
This is a premium feature.


thanks a lot Juan

"Juan T. Llibre" <[email protected]> escreveu na mensagem
Eduardo,

when you say "queue", do you mean getting a list of email
addresses from a database and sending emails to all of them ?

If so, here's a sample :

<%@ Page Language="VB" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Web.Mail" %>
<script runat="server">

Sub Page_Load(Src as object, E as EventArgs)

Dim P, U, Em As String
Dim connectionString As String = "server='YourSQLServerName'; trusted_connection=true;
database='YourSQLServerDatabase"
Dim dbConnection As IDbConnection = New SqlClient.SqlConnection(connectionString)

Dim queryString As String = "SELECT UserName, Password, Email FROM Users"
Dim dbCommand As IDbCommand = New SqlClient.SqlCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection

dbConnection.Open
Dim dataReader As IDataReader = dbCommand.ExecuteReader(CommandBehavior.CloseConnection)

While dataReader.Read()
U = dataReader("Username").ToString()
P = dataReader("Password").ToString()
Em = dataReader("Email").ToString()

' Build a MailMessage
Dim mail As System.Web.Mail.MailMessage = New System.Web.Mail.MailMessage
mail.From = "(e-mail address removed)"
mail.To = Em
mail.Subject = "Your Email's subject."
mail.BodyFormat = System.Web.Mail.MailFormat.Html

mail.Body="Hello, " & U & ".<p>Your Username is " & U & " and your password is " & P &
".<p>
And the rest of your HMTL message goes here..."

System.Web.Mail.SmtpMail.SmtpServer = "your.smtp.server"
System.Web.Mail.SmtpMail.Send(mail)
End While

End Sub
</script>
<html>
<head>
</head>
<body>
</body>
</html>

When you open that page, an email with the contents you specify
will be sent to every email address in the Email column in the Users
table in your SQL Server Database.
 
E

Eduardo Rosa

I don't think like that: if I can make that runs faster why let the user sit
front the machine waiting... With a bad server it could take more then 10
min.
That alread happened to me, the server was bad and the list was big
(newsletter for a portal), I don't know how much sending email was improved
in ASP.Net, maybe that works (I'll try) but I doubt...

thanks a lot
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,432
Messages
2,571,680
Members
48,796
Latest member
Greg L.

Latest Threads

Top