# زبان های اسکریپتی > Classic ASP >  مشکل در ارسال ایمیل

## reza_shnia

سلام
من یک هاست در رادکام دارم و می خواهم با اون ایمیل بفرستم.
تا جایی که من تحقیق کردم دو روش برای ارسال ایمیل با asp متداوله :
1- استفاده از کامپوننت AspEmail
2- استفاده از کامپوننت cdosys

ولی مشکل من اینکه در "رادکام" AspEmail نصب نیست،و من با این پیغام مواجه می شم : 
Server.CreateObject Failed   ، بنابراین روش اول منتفیه

اما روش دوم
من به عنوان نمونه این کد رو استفاده کردم :

DIM myMail
Set myMail=CreateObject("CDO.Message")
myMail.Subject="Sending email with CDO"
myMail.From="rezania@yahoo.com"
myMail.To="shaa@gmail.com"
myMail.TextBody="This is a message."
myMail.Send
set myMail=nothing

ولی متاسفانه با این پیغام مواجه شدم :
 The "SendUsing" configuration value is invalid

دوستان لطفا راهنمایی کنن که مشکل از کجاست؟؟؟
آیا روش دیگه ای هم برای ارسال ایمیل وجود داره؟مثلا با smtp

متشکرم

----------


## aryaei2000

سلام دوست عزیز
من هم مشکلی مشابه مشکل شما برام پیش اومد
ولی خودم یه کد نوشتم که کار میکنه.
امتحان کن ببین جواب میده
پیش از اجرای کد متغیر های زیر رو تعریف کن

mailhost = آدرس SMTP
smtpid = نام کاربری smptp
smptppass = رمز عبور smtp
subject = موضوع ایمیل
message = متن ایمیل 
sendto = آدرس گیرنده
sendfrom = آدرس فرستنده

Server.ScriptTimeout = 200
  On Error Resume Next
  Set objCDOSYSMail = Server.CreateObject("CDO.Message")
  If not mailHost = Empty then
   Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration")
   With objCDOSYSCon
    .Fields("http://schemas.microsoft.com/cdo/con...ion/smtpserver") = mailHost
    .Fields("http://schemas.microsoft.com/cdo/con...smtpserverport")  = 25
    .Fields("http://schemas.microsoft.com/cdo/con...tion/sendusing") = 2
    .Fields("http://schemas.microsoft.com/cdo/con...nectiontimeout") = 60
    If not SMTPID = Empty then
     .Fields("http://schemas.microsoft.com/cdo/con...tpauthenticate") = 1
     .Fields("http://schemas.microsoft.com/cdo/con...n/sendusername") = SMTPID
     .Fields("http://schemas.microsoft.com/cdo/con...n/sendpassword") = SMTPPAss
    End If
    .Fields.Update
   End With
   Set objCDOSYSMail.Configuration = objCDOSYSCon
  End If
  With objCDOSYSMail
   .From = sendFrom
   .Sender = sendFrom
   '.BodyPart.CharSet = "Windows-1252"
   '.HTMLBodyPart.charset = "Windows-1252"
   .To = "<" & sendTo & ">"
   .Subject = subject
     If isHTML then
      .HTMLBody = message
     Else: .TextBody = message
     End If
   .Send
  End With   
  Set objCDOSYSMail = Nothing
  On Error Goto 0

موفق باشی

----------


## reza_shnia

سلام دوست من
از اینکه این قدر زود جوابم رو دادی ممنونم. :بوس: 

آقا باز هم ایمل نفرستاد. :خیلی عصبانی: 
این دفعه اروری که می ده توضیح نداره.فقط کده :

error '80040211'
/test2/email.asp, line 115
من تو کد شما ، متغییر ها رو این جوری مقدار دهی کردم :

mailhost = "vadieh.net"
smtpid = "info@vadieh.net"
smptppass = "email password"
subject = "subject"
message = "testing email"
sendto = "shakiba@gmail.com"
sendfrom = "info@vadieh.net"

یک مطلبی که لازمه بهش اشاره کنم اینه که، من برای امتحان پسورد اتصال به mailhost رو عوض کردم (یعنی پسورد غلط وارد کردم)، ولی اروو تغییری نکرد :متعجب: 

بعد تو یک آزمایش دیگه متغییر mailhost رو به این شکل مقدار دهی کردم "mailhost = "smtp.vadieh.net ولی این دفعه این اروو رو داد : The transport failed to connect to the serve

احتمالا اشکال در نوع مقدار دهی متغییر ها هست.
لطفا راهنمایی کنید چیکار کنم؟

----------


## aryaei2000

mailhost رو اینجوری مقدار دهی کن
mail.vadieh.net
موفق باشی

----------


## reza_shnia

امتحان کردم ولی نشد :ناراحت: 
بنظرت مشکل از کجاست؟

----------


## reza_shnia

بالاخره مشکل من حل شد :لبخند گشاده!: 

با این کد که از پشتیبانی رادکام گرفتم مشکلم حل شد.

sTo = "MyEmail@gmail.com"
sFrom = "info@domain.ir"
sSubject = "test Subject"
sMailServer = "mail.domain.ir"
sBody = "test body mail"


    Set objMail = Server.CreateObject("CDO.Message")
    Set objConf = Server.CreateObject("CDO.Configuration") 
    Set objFields = objConf.Fields
    
    With objFields
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")  = sMailServer 
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10 
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "info@domain.ir"
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "My EMail Password"
        .Update 
    End With

    With objMail
        Set .Configuration = objConf
        .From = sFrom
        .To = sTo
        .Subject = sSubject
        .TextBody = sBody
    End With
    
    Err.Clear 
    on error resume next

    objMail.Send
    if len(Err.Description) = 0 then
        mes = " Message sent to " + sTo
        mes = mes + " TESTS COMPLETED SUCCESSFULLY!"
        IsSuccess = true
    else
        mes = " " + Err.Description + " TESTS FAILED!"
    end if
    Set objFields = Nothing
    Set objConf = Nothing
    Set objMail = Nothing

----------


## aryaei2000

مشکل کد من از کجا بود؟
بگو بدونم

----------


## reza_shnia

خودمم هم نمی دونم. ولی با این وجود ازت ممنونم ، چون کد شما راهنمایی خوبی بود.

راستی یک نکته
اگر کسی از کد بالا خواست استفاده بکنه ، این تگ رو قبل از Send بهش اضافه کنه تا با فارسی مشکلی نداشته باشه:

objMail.BodyPart.Charset = "utf-8"

----------


## ghafory86

سالام شرمند اما چون خیلی فوری بود برام اینجا مطرح کردم .
چرا نمیتونم صفحه وب جدید اضافه کنم .

----------


## aryaei2000

> سالام شرمند اما چون خیلی فوری بود برام اینجا مطرح کردم .
> چرا نمیتونم صفحه وب جدید اضافه کنم .


 دوست عزیز
 اولا سوالتون رو در یک تاپیک جدید باز کنید
ثانیا سوالتون رو واضح تر بپرسید.
موفق باشید.

----------


## bahram_plus

سلام


```
'new
 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"
 
 Dim objConfig  ' As CDO.Configuration
 Dim objMessage ' As CDO.Message
 Dim Fields     ' As ADODB.Fields
 
 ' 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)            = "mail.test.ir"
  .Item(cdoSMTPServerPort)        = 25
  .Item(cdoSMTPConnectionTimeout) = 60
  .Item(cdoSMTPAuthenticate)      = cdoBasic
  .Item(cdoSendUserName)          = "test@test.ir"
  .Item(cdoSendPassword)          = "tset"
 
  .Update
 End With
 
 Set objMessage = Server.CreateObject("CDO.Message")
 
 Set objMessage.Configuration = objConfig
 
 With objMessage
  .BodyPart.Charset = "utf-8"
  .To       = emailto
  .From     = emailfrom
  .Subject  = EmailSubject
  .HTMLBody = EmailBody
 End With
 
 If emailcc <> "0" Then objMessage.Cc = emailcc
 If emailbcc <> "0" Then objMessage.Bcc = emailbcc
 
 objMessage.Send
 
 Set Fields = Nothing
 Set objMessage = Nothing
 Set objConfig = Nothing
```



```
'end new
```

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

----------


## bahram_plus

کسی نیست جواب بده؟! :خیلی عصبانی:

----------


## aryaei2000

از کد زیر هم استفاده کردید؟

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

----------


## bahram_plus

> از کد زیر هم استفاده کردید؟
> 
>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


 

این کد رو که فرمودید گذاشتم درست نمیشه.
من یه فرم تو یه صفحه درست کردم،بعد توی یه صفحه asp دیگه اطلاعات فرم فرا خونده میشه و همون اطلاعات رو ایمیل میکنه. outlook  این ایمیل رو(کارکتر های فارسی) رو درست نمیاره.
مرسی

----------


## bahram_plus

دوستان عزیز کسی نیست کمک کنه؟ :خیلی عصبانی:

----------


## kashaneh

دوست عزیز کد زیر را امتحان کنید :

 objMail.BodyPart.charset = "unicode-1-1-utf-8";

در صورتیکه نتیجه نداد در ابتدای کدهای صفحه ارسال ایمیل خود کد زیر را درج و امتحان کنید :

<% Session.CodePage = 65001 %>

موفق باشی

----------

