📄 8034.html
字号:
<html>
<head>
<title>Re: 有人用过MAPI这个activeX元件吗?</title>
</head>
<body bgcolor="#FFFFFF" vlink="#808080">
<center>
<h1>Re: 有人用过MAPI这个activeX元件吗?</h1>
</center>
<hr size=7 width=75%>
<hr size=7 width=75%><p>
Posted by <a href="mailto:richard@mail.high-way.com.tw">richard</a> on December 04, 1998 at 15:23:09:<p>
In Reply to: <a href="8033.html">有人用过MAPI这个activeX元件吗?</a> posted by rex on December 04, 1998 at 15:05:06:<p>
利用 MAPI 寄信到 Internet<p>MAPI是 Messaging Application Program Interface 的缩写,Visual Basic 中有 2 个 <br>MAPI 控制项,分别是 MAPISession 与 MAPIMessages,MAPISession 控制项<br>可登入并且建立一个 MAPI 连线(session),也可以用来结束一个 MAPI 连线;<br>而 MAPIMessages 控制项让使用者可以执行多种邮件系统的功能。如果要正<br>常执行含有 MAPI 控制项的 VB 程式,作业系统中必须安装 MicroSoft Exchnage<br>(主要用到的是 32 位元 MAPI DDLs),否则将无法完成一些 MAPI 的功能,这<br>也是使用 MAPI 比较麻烦之处;国外有一些 OCX 专门针对收发 E-Mail 而设计<br>,但是必须花钱购买。<p>其实 VB 范例程式中的 vbmail.vbp 已经提供了一个相当完整的收发 E-mail 的程<br>式,但是现在IE、NC等免费浏览器都已具有 Mail 的功能,可能没有人会再需<br>要像 vbmail.vbp 这样的程式;如果你的程式中只是需要寄信的功能,不需要像<br> vbmail.vbp 中一堆繁琐的程式,倒是可以参考以下两段程式:<p>需求物件:<p>一个 Form,一个 MAPISession,一个 MAPIMessages,两个 CommandButton <br>(MAPISession与 MAPIMessages置放于[专案]->[设定使用元件]->[Microsoft<br>MAPI Controls 5.0]之内)<p>1.将相同内容的信件寄给多个使用者:<p>Private Sub Command1_Click()<br> Dim i As Long, strMailAddr(1 To 2) As String<br> Dim strSubject As String, strNoteText As String<br> strMailAddr(1) = "M8606018@mail.ntust.edu.tw"<br> strMailAddr(2) = "Jaric@ch.ntust.edu.tw"<br> strSubject = "测试MAPI的寄信功能"<br> strNoteText = "这是第一行" & vbNewLine & "这是第二行"<br> If MAPISession1.SessionID > 0 Then MAPISession1.SignOff<br> MAPISession1.LogonUI = True<br> MAPISession1.DownLoadMail = False<br> MAPISession1.SignOn<br> MAPIMessages1.SessionID = MAPISession1.SessionID<br> For i = LBound(strMailAddr) To UBound(strMailAddr)<br> MAPIMessages1.Compose<br> MAPIMessages1.RecipAddress = strMailAddr(i)<br> MAPIMessages1.ResolveName<br> MAPIMessages1.MsgSubject = strSubject<br> MAPIMessages1.MsgNoteText = strNoteText<br> MAPIMessages1.Send<br> Next<br> MAPISession1.SignOff<br>End Sub<p>RecipAddress 就是收件者的电子邮件地址,MsgSubject 就是邮件的主旨,<br>MsgNoteText就是邮件的内容,只要增加 strMailAddr 的资料数量,就可将<br>邮件寄给更多人,比较方便的做法是连结至某个资料库来设定 strMailAddr<br>,由于设定 MAPISession1.LogonUI = True,所以程式执行后会出现以下的对<br>话盒:(若已设定完成则不显现设定盒)<p> <p>这个对话盒是选取你之前在 Microsoft Exchange 编辑过的设定档,如果没有<br>任何设定档,就必须按 "新增" 钮来设定一些 Mail 伺服器的资料。<p>2.将不同内容的信件寄给多个使用者:<p>这段程式主要是通知每个使用者的个人密码,这里的 Password 函数只是很<br>简单地把传入的参数当成密码传回,如果要产生比较复杂一点的密码,可<br>以把字串转换成 ASCII,再对这些 ASCII 加减乘除一番。<p>Private Sub Command2_Click()<br> Dim i As Long, strMailAddr(1 To 2) As String, strCommon As String<br> Dim strAccount As String, strSubject As String, strNoteText As String<br> strMailAddr(1) = "M8606018@mail.ntust.edu.tw"<br> strMailAddr(2) = "Jaric@ch.ntust.edu.tw"<br> strSubject = "电脑教室使用通知"<br> strCommon = "本系电脑教室将于xx年xx月xx日开放,请务必遵守使用定。" _<br> & vbNewLine & "您的帐号和密码如下:" & vbNewLine<br> If MAPISession1.SessionID > 0 Then MAPISession1.SignOff<br> MAPISession1.DownLoadMail = False<br> MAPISession1.LogonUI = True<br> MAPISession1.SignOn<br> MAPIMessages1.SessionID = MAPISession1.SessionID<br> For i = LBound(strMailAddr) To UBound(strMailAddr)<br> strAccount = Mid(strMailAddr(i), 1, InStr(1, strMailAddr(i), "@") - 1)<br> MAPIMessages1.Compose<br> strNoteText = ""<br> strNoteText = strAccount & " 您好:" & vbNewLine & strCommon<br> strNoteText = strNoteText & "帐号:" & strAccount & vbNewLine<br> strNoteText = strNoteText & "密码:" & Password(strAccount)<br> MAPIMessages1.RecipAddress = strMailAddr(i)<br> MAPIMessages1.MsgSubject = strSubject<br> MAPIMessages1.MsgNoteText = strNoteText<br> MAPIMessages1.ResolveName<br> MAPIMessages1.Send<br> Next<br> MAPISession1.SignOff<br>End Sub<p>Private Function Password(s As String) As String<br> Password = s<br>End Function<p>寄出的两封信件大概是这样:<p>Jaric 您好:<br>本系电脑教室将于xx年xx月xx日开放,请务必遵守使用定。<br>您的帐号和密码如下:<br>帐号:Jaric<br>密码:Jaric<p>M8606018 您好:<br>本系电脑教室将于xx年xx月xx日开放,请务必遵守使用定。<br>您的帐号和密码如下:<br>帐号:M8606018<br>密码:M8606018<br>
<br>
<br><hr size=7 width=75%><p>
<a name="followups">Follow Ups:</a><br>
<ul><!--insert: 8034-->
<!--top: 8918--><li><a href="8918.html">Re: 有人用过MAPI这个activeX元件吗?</a> <b>yes888</b> <i>12:40:52 1/06/99</i>
(<!--responses: 8918-->0)
<ul><!--insert: 8918-->
</ul><!--end: 8918-->
</ul><!--end: 8034-->
<br><hr size=7 width=75%><p>
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -