Chinaunix首页 | 论坛 | 博客
  • 博客访问: 963629
  • 博文数量: 232
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 2315
  • 用 户 组: 普通用户
  • 注册时间: 2005-11-02 11:43
文章分类

全部博文(232)

文章存档

2009年(6)

2008年(22)

2007年(72)

2006年(85)

2005年(47)

我的朋友

分类: WINDOWS

2007-09-21 20:33:15

最近给几个客户做邮件转发的小功能的开发,其实功能应该来说很简单,但是其中也出现了一些小问题,造成死循环,在这里给大家共享一下我的教训:
邮件转发无非有以下几种方式:
1、利用邮件的规则来处理:在邮件数据库工具--》规则中新建规则,将所有的邮件转发到一个指定的邮件地址即可。这样相对较简单,但是不是很灵活。
2、通过编程来实现,在邮件数据库中新建一个邮件到达前执行的定时代理,将邮件转发给相应的人员即可。类似下面的代码
 Dim s As New NotesSession
 Dim db As NotesDatabase
 Dim doc As NotesDocument
 Dim newdoc As notesdocument
 
 Set db=s.currentdatabase
 Set doc=s.documentcontext
 Set newdoc = db.CreateDocument
 Call doc.CopyAllItems(newdoc, True)
 
 newdoc.subject="Fwd: "& newdoc.subject(0)
 newdoc.Sendto="abc"
 Call newdoc.send(False)
但是没有考虑到收件人不仅仅是sendto,还有copyto,blindcoyto,一旦当copyto 或者blindcoyto有发件人的名字,则会迅速的产生死循环。最后导致服务器撑满,并且还会将所有的邮件发给相干人等(Sendto,copyto,blindcoyto)。所以一定要注意将copyto,blindcoyto清空。
 
3、还有一个情况,有人尝试将所有的邮件转发到自己的外网邮箱,但是邮件服务器又设置了发送邮件的附件最大大小,如果超过该限额,就会产生退信,这样也会死循环下去,最后我看到一个在windows平台数据库达到64G,最后没办法再发了,才停下来。这样可以做一些控制,如果是一些特殊的邮件就不进行转发,或者超过限额不让收信。
阅读(1221) | 评论(0) | 转发(0) |
0

上一篇:新家的照片

下一篇: 更新的照片

给主人留下些什么吧!~~