邮件发送的问题,请高手赐教

wpmsoft 2003-01-03 12:50:26
我想用VB实现一个邮件发送程序,希望可以含有指定的附件。
查了MSDN中的一些相关贴子,试着写了些代码,可是有些问题,请高手指正。

背景:
在FORM中添加MAPISession与MAPIMessages控件,未做任何属性的设定。
加一按钮,编写单击事件程序。
outlook已经配置正确,可以收发邮件,此已证实。
程序中指定的文件存在于目录中,也已证实。

故障表现:
方法1:用ShellExecute的方法,系统弹出了outlook的发信界面,但是没有附件显示。我希望是包含附件,且可以直接发送出去。如果没有故障的话,不要弹出outlook的界面。

方法2:用MAPISession与MAPIMessages的方法,系统出错,为VB的实时错误,错误号是48389,同时弹出outlook的发信界面,但是没有附件显示。

源代码:

Private Sub Command3_Click()
Dim strSubject As String
Dim strAttach As String
Dim strAddress As String
Dim strBody As String
Dim strExecute As String
strSubject = "This is a Test Email"
strAttach = "d:\test.doc"
strBody = "Hello, %0d%0a Please find attached file"
strAddress = "Hello@263.net"
strExecute = "mailto:" & strAddress & "?subject=" & strSubject & "&attach=" & strAttach & "&body=" & strBody
ShellExecute Me.hwnd, "Open", strExecute, vbNullString, vbNullString, 1 'SW_SHOW

MAPISession1.SignOn
With MAPIMessages1
.MsgIndex = -1
.RecipDisplayName = strAddress
.MsgSubject = strSubject
.MsgNoteText = strBody
.AttachmentIndex = 0
.AttachmentPathName = strAttach
.SessionID = MAPISession1.SessionID
.Send
End With
MAPISession1.SignOff
MsgBox "Send Email Success", , "Email File "
End Sub
...全文
136 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
twinking 2003-01-16
  • 打赏
  • 举报
回复
帮你UP一下
找找高手
wpmsoft 2003-01-10
  • 打赏
  • 举报
回复
难道就没有哪位高手有亲身经历吗?
急死我了。
ksmark 2003-01-09
  • 打赏
  • 举报
回复
做得蛮好的!值得学习!
可否把你做的程序发一个给我,谢谢先...

mark_ma@pub.sz.jsinfo.net

不过我的说一句不中听的话,希望不要见谅。就你贴出来的这些代码好像就是用了两个控件就可以发送邮件了。是否太过简单啊。当然了我还没想到呢?呵呵...我就更差了。
wpmsoft 2003-01-09
  • 打赏
  • 举报
回复
1 用这种方法虽然可以,可是每次都要打开outlook,能不能通过改变ShellExecute的参数,使得直接把邮件发送出去,而不要显示outlook的界面呢?
  2 用MAPI的方法为什么不行呢?
wpmsoft 2003-01-03
  • 打赏
  • 举报
回复
对不起,我的陈述有误。
方法二中,应该不会弹出outlook的界面。在源代码中应该注释掉ShellExecute语句。
chinayang 2003-01-03
  • 打赏
  • 举报
回复
用API直接发吧..什么都不用..
wpmsoft 2003-01-03
  • 打赏
  • 举报
回复
Help me , Please
wpmsoft 2003-01-03
  • 打赏
  • 举报
回复
TO ALL:
  谢谢大家。我已经知道为什么我的代码加不上附件程序了。原因很简单,就是在我的字串中,要将附件文件就是attach=后面的字串用引号括起来:
strExecute = "mailto:" & strAddress & "?subject=" & strSubject & "&attach=""" & strAttach & """&body=" & strBody

接下来的问题:
  1 用这种方法虽然可以,可是每次都要打开outlook,能不能通过改变ShellExecute的参数,使得直接把邮件发送出去,而不要显示outlook的界面呢?
  2 用MAPI的方法为什么不行呢?
fling_boy 2003-01-03
  • 打赏
  • 举报
回复
当然,不用outlook是需要配置,但配置outlook和配置自己的程序是一样呀。
不过是这个写起来灵活一些。
wpmsoft 2003-01-03
  • 打赏
  • 举报
回复
TO fling_boy(andy) :
不用配置outlook的话,应该要在代码中写smtp服务器的地址、用户名与口令吧?这样子的话,就不可以把程序发布给不同的用户了。如果需要用户手动地输入的话,倒还不如让他配置outlook呢。不知阁下以为如何?
   欢迎交流:payment@fykj.com
fling_boy 2003-01-03
  • 打赏
  • 举报
回复
我可以给你一个不用配置outlook的也可以发邮件的例子。
用的是winsock 和smtp协议,可以带附件,支持群发。
不过就是代码多点,如果愿意看我可以给你发过去。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧