发送email的问题,各位进来小聚一下! 用winsock,通过SMTP命令集进行邮件发送。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在程序里用邮件转发服务器的smtp地址(此地址可以做成ini自由配置),每次发信都发到转发服务器上,由他来帮你发送这样从界面上看,就没有smtp配置部分了 用aspmail等第三方控件,就可以了。至于不要配置smtp,是指什么意思?aspmail中的函数sendmail中有个参数需要指定smtp server 我知道需要smtp server的,但是我发送email的是,指定一个smtp server,就好象是上海热线的油箱:smtp.citiz.net但是被它拒绝了,不知道为什么呢?我看了一些资料说,很多smtp服务器,现在都不为非会员做转发email的,但是我就觉得奇怪,那么我的outlook它发信,我设置的也是smtp.citiz.net,它怎么能发送成功呢?这是什么问题,2。我曾经看到过一个程序,它只需要你填写收信人的地址,不用任何设置,就可以发信了,这是怎么做到的 你需要身份验证的,要不很少有邮件服务器给你发。Private Enum SMTP_State MAIL_CONNECT MAIL_HELO MAIL_from MAIL_RCPTTO MAIL_DATA MAIL_DOT MAIL_QUIT MAIL_USER MAIL_PASS mail_loginEnd EnumPrivate m_State As SMTP_StatePrivate m_strEncodedFiles As StringPrivate Function Base64_Encode(strSource) As String 'base64シモテワヒ羚ィ Const BASE64_TABLE As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" Dim strTempLine As String Dim j As Integer For j = 1 To (Len(strSource) - Len(strSource) Mod 3) Step 3 strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) \ 4) + 1, 1) strTempLine = strTempLine + Mid(BASE64_TABLE, ((Asc(Mid(strSource, j, 1)) Mod 4) * 16 _ + Asc(Mid(strSource, j + 1, 1)) \ 16) + 1, 1) strTempLine = strTempLine + Mid(BASE64_TABLE, ((Asc(Mid(strSource, j + 1, 1)) Mod 16) * 4 _ + Asc(Mid(strSource, j + 2, 1)) \ 64) + 1, 1) strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j + 2, 1)) Mod 64) + 1, 1) Next j If Not (Len(strSource) Mod 3) = 0 Then If (Len(strSource) Mod 3) = 2 Then strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) \ 4) + 1, 1) strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) Mod 4) * 16 _ + Asc(Mid(strSource, j + 1, 1)) \ 16 + 1, 1) strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j + 1, 1)) Mod 16) * 4 + 1, 1) strTempLine = strTempLine & "=" ElseIf (Len(strSource) Mod 3) = 1 Then strTempLine = strTempLine + Mid(BASE64_TABLE, Asc(Mid(strSource, j, 1)) \ 4 + 1, 1) strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) Mod 4) * 16 + 1, 1) strTempLine = strTempLine & "==" End If End If Base64_Encode = strTempLineEnd FunctionPrivate Sub cmdExit_Click()Unload MeEnd SubPrivate Sub CmdSend1_Click() Winsock1.Close Winsock1.LocalPort = 0 strserver = txtserver ColonPos = InStr(strserver, ":") If ColonPos = 0 Then Winsock1.Connect strserver, 25 Else lngPort = CLng(Right$(strserver, Len(strserver) - ColonPos)) strserver = Left$(strserver, ColonPos - 1) Winsock1.Connect strserver, lngPort End If m_State = MAIL_CONNECT ' StatusTxt = "Try to connect"End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim strServerResponse As String Dim strResponseCode As String Dim strDataToSend As String ' Const RandString As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_" Dim Globalstr As String For jd = 1 To 24 uniquey = Int(Rnd * Len(RandString)) + 1 Globalstr = Globalstr + Mid(RandString, uniquey, 1) Next jd strime1 = "Subject:" + Chr(32) + subject + vbCrLf ' Subject of E-Mail strime = txtMessage + vbCrLf ' E-mail message body strime2 = "X-Mailer:VVV:モハシキ「ヒヘネ晴V1.0" + vbCrLf ' What program sent the e-mail, customize this 'MULTI-PART Edit strime = "------=_NextPart_" + Globalstr + vbCrLf + "Content-type: text/plain; charset=gb2312" + vbCrLf + vbCrLf + strime strime = strime + "------=_NextPart_" + Globalstr + vbCrLf + "Content-type: text/HTML" + vbCrLf + vbCrLf + txtmessage1 + vbCrLf + vbCrLf strime = strime + "------=_NextPart_" + Globalstr + "--" + vbCrLf strime1 = strime1 + "MIME-Version: 1.0" + vbCrLf + "Content-Type: multipart/alternative; " + vbCrLf + Chr(9) + "boundary=""----=_NextPart_" + Globalstr + """" + vbCrLf + vbCrLf + "This mail is In MIME format. Your mail interface does Not appear To support this format." + vbCrLf + vbCrLf strimeall = strime2 + strime1 Winsock1.GetData strServerResponse strResponseCode = Left(strServerResponse, 3) If strResponseCode = "250" Or _ strResponseCode = "220" Or _ strResponseCode = "354" Or _ strResponseCode = "334" Or _ strResponseCode = "235" Then Select Case m_State Case MAIL_CONNECT m_State = MAIL_HELO strDataToSend = Trim$(txtfrom) 'strDataToSend = Left$(strDataToSend, _ InStr(1, strDataToSend, "@") - 1) Winsock1.SendData "HELO " & strDataToSend & vbCrLf StatusTxt = "logging in" Case MAIL_HELO m_State = MAIL_USER Winsock1.SendData "AUTH LOGIN" & vbCrLf StatusTxt = "check user" Case MAIL_USER m_State = MAIL_PASS Winsock1.SendData (Base64_Encode(Trim(user.Text))) & vbCrLf StatusTxt = "check password" Case MAIL_PASS m_State = mail_login Winsock1.SendData (Base64_Encode(txtpwa)) & vbCrLf StatusTxt = "from " Case mail_login m_State = MAIL_from Winsock1.SendData "MAIL FROM:" & Trim$(txtfrom) & vbCrLf StatusTxt = "to" Case MAIL_from m_State = MAIL_RCPTTO Winsock1.SendData "RCPT TO:" & Trim$(getaddress) & vbCrLf StatusTxt = "sending..." Case MAIL_RCPTTO m_State = MAIL_DATA Winsock1.SendData "DATA" & vbCrLf StatusTxt = "get data" Case MAIL_DATA m_State = MAIL_DOT Winsock1.SendData "From:" & user.Text & " <" & txtfrom & ">" & vbCrLf Winsock1.SendData "To:" & toname & " <" & getaddress & ">" & vbCrLf Winsock1.SendData strimeall & vbCrLf Winsock1.SendData strime & vbCrLf Winsock1.SendData "." & vbCrLf StatusTxt = "over" Case MAIL_DOT m_State = MAIL_QUIT Winsock1.SendData "QUIT" & vbCrLf StatusTxt = "succeed!!!" Case MAIL_QUIT Winsock1.Close StatusTxt = "エテ・ョヨミ..." End Select Else Winsock1.Close End IfDebug.Print strServerResponseEnd Sub 兄弟,你还在忙啊!我帮你看 了一下上面的代码,基本没什么问题,至于格式,他写个是mime格式的问题,实在不行的话,你把它改成非mime格式,这样应该没什么的如果你实在不行的话,留个email给我,我发个例子给你,是一个dll文件,我前一段时间刚做的 噢,是吗,那么 你帮 我 发一个过来吧,谢谢了[email protected],com,cn 不好意思,写错了 ,[email protected] to: litsnake1(litsnake)能否发个给在下,谢谢您!!![email protected] 怎样获取ide内的字符 GetObject 与Automation的关系是什么?? VB232通讯遇到问题,太奇怪了,估计没人遇到过 如何得到一个label控件的句柄? 那位仁兄有用VB做的ping的源程序 我将在下周推出免费邮件群发&群收系统. 这个功能程序怎么写? 有人能给一个creatservice的样例吗?帮忙顶的也送分 高分求救 请问VB中数组怎么用?具体格式是怎么样的? 有一个很基础的问题,但是我怎么也不会 最菜最菜的问题,如何连接SQL数据库?能提供个教程网址最好了。
但是被它拒绝了,不知道为什么呢?
我看了一些资料说,很多smtp服务器,现在都不为非会员做转发email的,但是我就觉得奇怪,那么我的outlook它发信,我设置的也是smtp.citiz.net,它怎么能发送成功呢?
这是什么问题,2。我曾经看到过一个程序,它只需要你填写收信人的地址,不用任何设置,就可以发信了,这是怎么做到的
Private Enum SMTP_State
MAIL_CONNECT
MAIL_HELO
MAIL_from
MAIL_RCPTTO
MAIL_DATA
MAIL_DOT
MAIL_QUIT
MAIL_USER
MAIL_PASS
mail_login
End Enum
Private m_State As SMTP_State
Private m_strEncodedFiles As String
Private Function Base64_Encode(strSource) As String 'base64シモテワヒ羚ィ
Const BASE64_TABLE As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim strTempLine As String
Dim j As Integer
For j = 1 To (Len(strSource) - Len(strSource) Mod 3) Step 3
strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) \ 4) + 1, 1)
strTempLine = strTempLine + Mid(BASE64_TABLE, ((Asc(Mid(strSource, j, 1)) Mod 4) * 16 _
+ Asc(Mid(strSource, j + 1, 1)) \ 16) + 1, 1)
strTempLine = strTempLine + Mid(BASE64_TABLE, ((Asc(Mid(strSource, j + 1, 1)) Mod 16) * 4 _
+ Asc(Mid(strSource, j + 2, 1)) \ 64) + 1, 1)
strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j + 2, 1)) Mod 64) + 1, 1)
Next j
If Not (Len(strSource) Mod 3) = 0 Then
If (Len(strSource) Mod 3) = 2 Then
strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) \ 4) + 1, 1)
strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) Mod 4) * 16 _
+ Asc(Mid(strSource, j + 1, 1)) \ 16 + 1, 1)
strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j + 1, 1)) Mod 16) * 4 + 1, 1)
strTempLine = strTempLine & "="
ElseIf (Len(strSource) Mod 3) = 1 Then
strTempLine = strTempLine + Mid(BASE64_TABLE, Asc(Mid(strSource, j, 1)) \ 4 + 1, 1)
strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) Mod 4) * 16 + 1, 1)
strTempLine = strTempLine & "=="
End If
End If
Base64_Encode = strTempLine
End Function
Private Sub cmdExit_Click()
Unload Me
End Sub
Private Sub CmdSend1_Click()
Winsock1.Close
Winsock1.LocalPort = 0
strserver = txtserver
ColonPos = InStr(strserver, ":")
If ColonPos = 0 Then
Winsock1.Connect strserver, 25
Else
lngPort = CLng(Right$(strserver, Len(strserver) - ColonPos))
strserver = Left$(strserver, ColonPos - 1)
Winsock1.Connect strserver, lngPort
End If
m_State = MAIL_CONNECT '
StatusTxt = "Try to connect"
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strServerResponse As String
Dim strResponseCode As String
Dim strDataToSend As String '
Const RandString As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_"
Dim Globalstr As String
For jd = 1 To 24
uniquey = Int(Rnd * Len(RandString)) + 1
Globalstr = Globalstr + Mid(RandString, uniquey, 1)
Next jd
strime1 = "Subject:" + Chr(32) + subject + vbCrLf ' Subject of E-Mail
strime = txtMessage + vbCrLf ' E-mail message body
strime2 = "X-Mailer:VVV:モハシキ「ヒヘネ晴V1.0" + vbCrLf ' What program sent the e-mail, customize this
'MULTI-PART Edit
strime = "------=_NextPart_" + Globalstr + vbCrLf + "Content-type: text/plain; charset=gb2312" + vbCrLf + vbCrLf + strime
strime = strime + "------=_NextPart_" + Globalstr + vbCrLf + "Content-type: text/HTML" + vbCrLf + vbCrLf + txtmessage1 + vbCrLf + vbCrLf
strime = strime + "------=_NextPart_" + Globalstr + "--" + vbCrLf
strime1 = strime1 + "MIME-Version: 1.0" + vbCrLf + "Content-Type: multipart/alternative; " + vbCrLf + Chr(9) + "boundary=""----=_NextPart_" + Globalstr + """" + vbCrLf + vbCrLf + "This mail is In MIME format. Your mail interface does Not appear To support this format." + vbCrLf + vbCrLf
strimeall = strime2 + strime1
Winsock1.GetData strServerResponse
strResponseCode = Left(strServerResponse, 3)
If strResponseCode = "250" Or _
strResponseCode = "220" Or _
strResponseCode = "354" Or _
strResponseCode = "334" Or _
strResponseCode = "235" Then
Select Case m_State
Case MAIL_CONNECT
m_State = MAIL_HELO
strDataToSend = Trim$(txtfrom)
'strDataToSend = Left$(strDataToSend, _
InStr(1, strDataToSend, "@") - 1)
Winsock1.SendData "HELO " & strDataToSend & vbCrLf
StatusTxt = "logging in"
Case MAIL_HELO
m_State = MAIL_USER
Winsock1.SendData "AUTH LOGIN" & vbCrLf
StatusTxt = "check user"
Case MAIL_USER
m_State = MAIL_PASS
Winsock1.SendData (Base64_Encode(Trim(user.Text))) & vbCrLf
StatusTxt = "check password"
Case MAIL_PASS
m_State = mail_login
Winsock1.SendData (Base64_Encode(txtpwa)) & vbCrLf
StatusTxt = "from "
Case mail_login
m_State = MAIL_from
Winsock1.SendData "MAIL FROM:" & Trim$(txtfrom) & vbCrLf
StatusTxt = "to"
Case MAIL_from
m_State = MAIL_RCPTTO
Winsock1.SendData "RCPT TO:" & Trim$(getaddress) & vbCrLf
StatusTxt = "sending..."
Case MAIL_RCPTTO
m_State = MAIL_DATA
Winsock1.SendData "DATA" & vbCrLf
StatusTxt = "get data"
Case MAIL_DATA
m_State = MAIL_DOT
Winsock1.SendData "From:" & user.Text & " <" & txtfrom & ">" & vbCrLf
Winsock1.SendData "To:" & toname & " <" & getaddress & ">" & vbCrLf
Winsock1.SendData strimeall & vbCrLf
Winsock1.SendData strime & vbCrLf
Winsock1.SendData "." & vbCrLf
StatusTxt = "over"
Case MAIL_DOT
m_State = MAIL_QUIT
Winsock1.SendData "QUIT" & vbCrLf
StatusTxt = "succeed!!!"
Case MAIL_QUIT
Winsock1.Close
StatusTxt = "エテ・ョヨミ..."
End Select
Else
Winsock1.Close
End If
Debug.Print strServerResponse
End Sub
我帮你看 了一下上面的代码,基本没什么问题,
至于格式,他写个是mime格式的问题,实在不行的话,你把它改成非mime格式,这样应该没什么的
如果你实在不行的话,留个email给我,我发个例子给你,是一个dll文件,我前一段时间刚做的
[email protected]
能否发个给在下,谢谢您!!!
[email protected]