ورود

View Full Version : CDOSYS



هواشناس
پنج شنبه 31 تیر 1389, 08:51 صبح
بنام خدا
با سلام
می خواستم ببینم با cDOSYS چطور میشه یک ایمیل رو به چند نفر فرستاد
آیا این تعداد محدودیت داره یه کد واسه اینکار دارم که در زیر گفته شده ولی ایرادش این هست که حلقه روی کل کد اجرا میشه و مثلا براس ارسال به 100 نفر کد کد 100 بار اجرا میشه
من لازم د ارم که در ضمن اجرای ارسال به 100 نفر مثلا بتونم درا دیتابیسی که دارم تیک ارسال یا عدم ارسال (در صف ارسال) خورده بشه
منبع کد : http://www.frontpagewebmaster.com/fb.asp?m=255161


کد:

<%
Dim cn, RS, SQL, Conn, email, Z

Dim objConfig ' As CDO.Configuration
Dim objMessage ' As CDO.Message
Dim Fields ' As ADODB.Fields

Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing"
Const cdoSendUsingPort = 2
Const cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver"
Const cdoSMTPServerPort = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
Const cdoSMTPConnectionTimeout = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"
Const cdoSMTPAuthenticate = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"
Const cdoBasic = 1
Const cdoSendUserName = "http://schemas.microsoft.com/cdo/configuration/sendusername"
Const cdoSendPassword = "http://schemas.microsoft.com/cdo/configuration/sendpassword"

Set cn = Server.CreateObject("ADODB.Connection")
cn.Open("Provider=SQLOLEDB;Server=CRPDALMSQ06;Database=ukda shSQL1;UID=IMU;pwd=hmfic2004;")
'This next line is your SQL for the data you want to use
SQL = "Select * FROM emailtest"

set Conn=server.createobject("adodb.connection")
Conn.open cn
Set RS = Conn.Execute (SQL)

DO WHILE not RS.EOF
email=(rs("x_email"))

' Get a handle on the config object and it's fields
Set objConfig = Server.CreateObject("CDO.Configuration")
Set Fields = objConfig.Fields

' Set config fields we care about
With Fields
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServer) = "smtp3dns.myemailserver.com"
.Item(cdoSMTPServerPort) = 25
.Item(cdoSMTPConnectionTimeout) = 10
.Item(cdoSMTPAuthenticate) = cdoBasic
.Update
End With

Set objMessage = Server.CreateObject("CDO.Message")

Set objMessage.Configuration = objConfig

With objMessage
.To = email
.From = "me@myemailserver.com"
.cc = "me@myemailserver.com"
.Subject = "LET ME KNOW IF YOU GET THIS!"
.textbody = "Hey this works:"
.Send
End With

Set Fields = Nothing
Set objMessage = Nothing
Set objConfig = Nothing

RS.MoveNext
Loop
Set RS = nothing
Conn.close
%>

فؤاد
شنبه 02 مرداد 1389, 05:50 صبح
سلام

شما میتونی با بکارگیری آرایه ها و کمی بکارگیری تکنیک های کدنویسی (مختصر و مفید نویسی) تنها سرعت اجرای کدها رو بالا ببری و شاید هم بتونی تعداد عملیات ها رو کم کنی (این وسط سرعت سرورت خیلی مهمه) با این همه من هم چون قبلا با همین مسئله درگیر بودم و راه حل مناسب و تاپی بدست نیاوردم تصمیم گرفتم از کمپوننت دیگه ای برای ارسال ایمیل استفاده کنم - کمپوننتی که بشه در یک فرمان به N نفر یک ایمیل رو ارسال کرد یا اینکه تنظیمات و امکانات بیشتری از CDOSYS داشته باشه.

یه نگاهی به این بنداز
http://www.asp101.com/tips/index.asp?id=123

ناگفته نماند که بعضی از سرورها با ارسال ایمیل به شکل یک شکل و انبوه مشکل دارن !!!

به نظر من این وسط امکانات سرور خیلی به کمک برنامه نویس میتونه بیاد.

امیدوارم پاسخ من ذره ای مفید بوده باشه