这个winsock发邮件,报错"503 Error: send HELO/EHLO first",要怎么修改下?
另外winsock是不是会cpu开销很大?
用winsock发邮件,报错"503 Error: send HELO/EHLO first".求帮助.多谢!全部完整源码:
Dim ProgressDim Green_Light As BooleanDim DATAFile As StringPrivate Sub Form_Load()Progress = 0Load LOG_FORMLOG_FORM.ShowMAIL_FROM = "1111111111111@qq.com"FROM = "1111111111"RCPT_TO = "6666666666@qq.com"MAIL_TO = "6666666666"SMTP_HOST = "smtp.qq.com"SUBJECT = "11111111111111111111111111111"End SubPrivate Sub Form_Terminate()Unload MeMe.HideUnload LOG_FORMLOG_FORM.HideEndEnd SubPrivate Sub Form_Unload(Cancel As Integer)EndEnd SubPrivate Sub MAIL_RESET_Click()Winsock1.CloseSMTP_HOST = ""FROM = ""MAIL_FROM = ""MAIL_TO = ""RCPT_TO = ""SUBJECT = ""DATA = ""STATUS = ""End SubPrivate Sub SEND_MAIL_Click()Winsock1.CloseWinsock1.Connect SMTP_HOST, "25"Do While Winsock1.State <> sckConnectedDoEventsSTATUS.Text = "Connecting to " & SMTP_HOST & ". Please wait."LoopSTATUS.Text = "Connected to " & SMTP_HOST & "."LOG_FORM.LOG_TEXT.Text = LOG_FORM.LOG_TEXT.Text & "Connected to " & SMTP_HOST & "." & Chr$(13) & Chr$(10)Do While Green_Light = FalseDoEventsSTATUS.Text = "Waiting for reply..."LoopWinsock1.SendData "MAIL FROM: " & MAIL_FROM & Chr$(13) & Chr$(10)LOG_FORM.LOG_TEXT.Text = LOG_FORM.LOG_TEXT.Text & "MAIL FROM: " & MAIL_FROM & Chr$(13) & Chr$(10)Do While Progress <> 1DoEventsSTATUS.Text = "Sending data. (1 of 3)"LoopWinsock1.SendData "RCPT TO: " & RCPT_TO & Chr$(13) & Chr$(10)LOG_FORM.LOG_TEXT.Text = LOG_FORM.LOG_TEXT.Text & "RCPT TO: " & RCPT_TO & Chr$(13) & Chr$(10)Do While Progress <> 2DoEventsSTATUS.Text = "Sending data. (2 of 3)"LoopWinsock1.SendData "DATA" & Chr$(13) & Chr$(10)LOG_FORM.LOG_TEXT.Text = LOG_FORM.LOG_TEXT.Text & "DATA" & Chr$(13) & Chr$(10)Do While Progress <> 3DoEventsSTATUS.Text = "Setting up body transfer..."LoopWinsock1.SendData "FROM: " & FROM & " <" & MAIL_FROM & ">" & Chr$(13) & Chr$(10)Winsock1.SendData "TO: " & MAIL_TO & " <" & RCPT_TO & ">" & Chr$(13) & Chr$(10)Winsock1.SendData "SUBJECT: " & SUBJECT & Chr$(13) & Chr$(10)Winsock1.SendData Chr$(13) & Chr$(10)Winsock1.SendData DATA & Chr$(13) & Chr$(10)LOG_FORM.LOG_TEXT.Text = LOG_FORM.LOG_TEXT.Text & DATA & Chr$(13) & Chr$(10)Winsock1.SendData Chr$(13) & Chr$(10) & "." & Chr$(13) & Chr$(10)LOG_FORM.LOG_TEXT.Text = LOG_FORM.LOG_TEXT.Text & Chr$(13) & Chr$(10) & "." & Chr$(13) & Chr$(10)Do While Progress <> 4DoEventsSTATUS.Text = "Sending data. (3 of 3)"LoopWinsock1.SendData "QUIT" & Chr$(13) & Chr$(10)STATUS.Text = "Done"Winsock1.CloseEnd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Winsock1.GetData DATAFileReply = Mid(DATAFile, 1, 3)LOG_FORM.LOG_TEXT.Text = LOG_FORM.LOG_TEXT.Text & DATAFile & Chr$(13) & Chr$(10)If Reply = 250 Or Reply = 354 ThenProgress = Progress + 1End IfIf Reply = 220 ThenGreen_Light = TrueEnd IfEnd Sub
你需要在实际环境中,打开命令提示符亲自尝试一次完整的登陆过程。你代码里的登陆方法你自己手工telnet的时候都没能通吧?
http://window98lsq.blog.sohu.com/91486223.html