如果邮件含有附件,如果正确分离出来呢?
解决方案 »
- winsock 程序调试问题
- 报表生成的问题~
- 最近机器老是莫名其妙自动弹出一个IE广告窗口,我想编个程序查这个广告窗口是由哪个进程弹出的,有办法查吗?
- 如何手动生成一个RecordSet,并且手动往里面放数据?
- 一个 一级考试系统只多少钱(含原代码)!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 这段代码写在那里?
- 我想知道在哪可以下载 Microsoft Visual Studio 的中文版
- ~~有关多文档窗体的问题请教!
- 几个项目没搞定,有家不能回.......*_*,我的票谁要?
- TextBox的文本被选择时的消息
- 我想做个可以读取和修改某个游戏内存的软件,可是他的内存数据经常变怎么办?
- 跪求关于一个teechart的源代码!!!!!
On Error Resume Next
With CommonDialog1
.DialogTitle = "Insert Attachment"
.Filter = "All Files (*.*)|*.*"
.ShowOpen
If Dir(.FileName) <> "" Then
txtAttachment.Text = .FileName
' 顯示 Attachment 的 Icon
oleAttachment.SourceDoc = .FileName
oleAttachment.CreateEmbed .FileName
Else
MsgBox "Attachment is not available.", vbCritical
End If
End With
End SubPrivate Sub cmdSend_Click()
' 開始 MAPI Session
MAPISession1.SignOn
' 當 MAPI Session 建立後,
' Session 所產生的 Handle 會存於 SessionID 屬性中
If MAPISession1.SessionID <> 0 Then
' 建立 MAPIMessages 與 MAPISession 間之有效關聯
MAPIMessages1.SessionID = MAPISession1.SessionID
' 建立新的 E-Mail Message
MAPIMessages1.Compose
' 收件者 (Recipient's Name)
MAPIMessages1.RecipDisplayName = txtName.Text
' 收件者的 E-Mail Address
MAPIMessages1.RecipAddress = "smtp: " & txtAddress.Text
' 是否要檢查收件者有無存在於全域 (Global) 或個人 (Personal) 通訊錄裏
MAPIMessages1.AddressResolveUI = True
' 檢查收件者有無存在於全域 (Global) 或個人 (Personal) 通訊錄裏
MAPIMessages1.ResolveName
' E-Mail 的主旨
MAPIMessages1.MsgSubject = txtSubject.Text
' E-Mail 的內文
MAPIMessages1.MsgNoteText = txtNote.Text
' 設定 Attachment (附件)
If Dir(txtAttachment.Text) <> "" Then
MAPIMessages1.MsgNoteText = MAPIMessages1.MsgNoteText & vbCrLf
MAPIMessages1.AttachmentPosition = Len(MAPIMessages1.MsgNoteText) - 1
MAPIMessages1.AttachmentPathName = txtAttachment.Text
End If
' 傳送 E-Mail 且不顯示"郵件對話盒" (直接傳送)
MAPIMessages1.Send False
End If
' 結束 MAPI Session
MAPISession1.SignOff
End SubPrivate Sub cmdExit_Click()
End
End Sub
我發附件就是這樣的呀
如果不装outlook你的程序就等于废了,所以现在已没有人再用mapi写邮件程序了
另外
还是看看题目:是接收附件,发送附件我早已解决最后,这个问题大家可以不再回,因为我已搞定了,还是自己有用哈哈
我用的代码
dd = FreeFile
Open "d:\temp" For Input As #dd
While Not EOF(dd)
Line Input #dd, ff
Debug.Print ff
Winsock2.SendData ff & vbCrLf
Wend
Close #dd
不是winsock本身有8k限制把
///偶最近在寫這個方面的文章,在整理中,因為突然加案子,一直在拖。
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strServerResponse As String
Dim xjnr
Dim llen As Long
Dim mbyte() As Byte
Dim strResponseCode 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
Select Case m_State
Case MAIL_CONNECT
m_State = MAIL_HELO
Winsock1.SendData "HELO " & UsreuserFXRDZ & vbCrLf
StatusTxt = "登陆服务器"
Winsock1.GetData strServerResponse
If Left(strServerResponse, 3) <> "220" Then
Winsock1.Close
Unload Me
MsgBox "无法登陆服务器"
End If
Case MAIL_HELO
m_State = MAIL_USER
Winsock1.SendData "AUTH LOGIN" & vbCrLf
StatusTxt = "正在校验用户名"
Winsock1.GetData strServerResponse
If Left(strServerResponse, 3) <> "250" Then
Winsock1.Close
Unload Me
MsgBox "无法打开邮件发送对话"
End If
Case MAIL_USER
m_State = MAIL_PASS
Winsock1.SendData (Base64_Encode(Trim(UseruserNAME))) & vbCrLf
StatusTxt = "校验用户密码"
Winsock1.GetData strServerResponse
Case MAIL_PASS
m_State = mail_login
Winsock1.SendData (Base64_Encode(Useruserpass)) & vbCrLf
StatusTxt = "发送人邮件地址"
Winsock1.GetData strServerResponse
Case mail_login
Winsock1.GetData strServerResponse
m_State = MAIL_from
Winsock1.SendData "MAIL FROM:" & Trim$(UsreuserFXRDZ) & vbCrLf
StatusTxt = "接收人邮件地址"
Case MAIL_from
m_State = MAIL_RCPTTO
Winsock1.SendData "RCPT TO:" & Trim$(InsertHtmlCodeede(Trim$(InsertHtmlCodee(写新邮件.Text1)))) & vbCrLf
StatusTxt = "邮件发送之中..."
Winsock1.GetData strServerResponse
Case MAIL_RCPTTO
m_State = MAIL_DATA
Winsock1.SendData "DATA" & vbCrLf
StatusTxt = "获取邮件内容"
Winsock1.GetData strServerResponse
Case MAIL_DATA
m_State = MAIL_DOT
Dim strDataToSendend As Variant
Dim strDataToSend As Variant
Winsock1.SendData "From:" & " <" & 写新邮件.Text4 & ">" & vbCrLf
MsgBox InsertHtmlCodeede(Trim$(InsertHtmlCodee(写新邮件.Text1)))
Winsock1.SendData "To:" & " <" & InsertHtmlCodeede(Trim$(InsertHtmlCodee(写新邮件.Text1))) & ">" & vbCrLf
strDataToSend = Split(写新邮件.Fsemail, vbCrLf)
For Each strDataToSendend In strDataToSend
Winsock1.SendData CStr(strDataToSendend) & vbCrLf
Next
Winsock1.SendData "." & vbCrLf
StatusTxt = "邮件送完毕"
Winsock1.GetData strServerResponse
Case MAIL_DOT
m_State = MAIL_QUIT
Winsock1.SendData "QUIT" & vbCrLf
MsgBox "VVVVVVVVVV" '有时执行不到这句
Case MAIL_QUIT
Winsock1.Close
Unload 写新邮件
Unload Me
End Select
Debug.Print strServerResponseEnd Sub
之所以长时间不退出,是因为你的程序中的Winsock1.SendData "QUIT" & vbCrLf没有执行导致的,邮件服务器只有在收到"Quit"命令,它才会退出。
谢谢您,谢谢!!!为何Winsock1.SendData "QUIT" & vbCrLf没有执行,该如何改,还请您帮助,谢谢!!!!
你确定每次发送完毕,都回执行quit命令吗?
多半你的程序在发送邮件时卡在什么地方了。
因,谢谢!!!
http://www.efile.com.cn/efile/huangtao/SmartMail.bmp安装盘及其代码下载地址:
http://www.cnkernel.com/opensoft.asp?soft_id=3&url=4本软件开始出售源代码
谢谢您,谢谢!!!!
[email protected]
谢谢!!!!
http://www.cnkernel.com/opensoft.asp?soft_id=3&url=4无法下载,您能发送给我吗,谢谢!!!
你提供的代码好像在那里见过,你是不是南京审计学院的
我不相信那样的代码能发送300k的信体,winsock的8k缓冲区决定了大于8k的数据不可能在一次发送完毕的//
我的信箱[email protected] ,有空大家一起探讨winsock缓冲区问题如何
真的见过吗,一年前我倒是发布过,不过这一年来,我很少上网了,一直在改善该软件,以及作相关应用,昨天一进来,发现信誉分大大下降.现在该软件基本上已经形成一个开发平台.并开始出售产品!您说的问题,必须在一此发送完毕后,才能发送下一个包,因为带宽有限阿.并不是我写数据到端口写多少就成功发送多少了.如果是那样的话,一个200M的东西,不出10秒就可以读完并写完,实际上我还没有看见这样的带宽阿.
我正在做邮件的发送的程序,如果有意我们可以交换,你可以给我邮件发送的程序,包括发送附件,内嵌资源一起发送的,可靠的话给我留言。
我用的是POP3协议收,和准备使用SMTP来发。
我也是自己在网上找了好久,没有找到答案,最后还是自己研究解决了。