您的位置:首页 > 编程语言 > Java开发

java 调用dll实现exchange server发email和保存email到Drafts

2011-05-25 15:45 281 查看
java项目需要使用outlook exchange server发email和保存已发email到drafts

在网上查找了很多java call exchange server的方法和call outlook的方法,要不就很复杂,要不就要licence,非常麻烦,考虑了很久,最后决定使用exchange server的outlook client来发送email,把和exchange server的交互交给client,java只负责和outlook client交互。

而与outlook交互最简单的方法就是用VB来调用,又直观又方便,所以打算先用VB写一个和outlook交互的DLL,然后再使用java call这个DLL实现email的sent和save to drafts。

首先,VB调用outlook。

VB CODE(网上很多):

*************************************************************************************

Dim MsOutlook, NS, draftFldrs
Function InitializeOutlook()
InitializeOutlook = True
Err.Clear
On Error Resume Next
Set MsOutlook = CreateObject("Outlook.Application")
If Err.Number <> 0 Then
Err.Clear
Set MsOutlook = CreateObject("Outlook.Application.11")
End If
Set NS = MsOutlook.GetNamespace("MAPI")

Set draftFldrs = NS.Folders("FY2010").Folders("Drafts")

If Err.Number <> 0 Then
InitializeOutlook = False

End If

End Function

Sub AddItemToDraft(mSubject, mHTMLBody, mTo, mToCC, mToBCC)

Set MI = MsOutlook.CreateItem(olMailItem)

MI.Subject = mSubject

MI.HTMLBody = mHTMLBody
MI.To = mTo
MI.CC = mToCC
MI.BCC = mToBCC
MI.Save
Set MI = Nothing

End Sub
Private Sub Class_Initialize()

InitializeOutlook

End Sub
Public Sub SendEmail(mSubject, mHTMLBody, mTo, mToCC, mToBCC)

Set MI = MsOutlook.CreateItem(olMailItem)

MI.Subject = mSubject

MI.HTMLBody = mHTMLBody

MI.To = mTo
MI.CC = mToCC
MI.BCC = mToBCC

MI.Send
Set MI = Nothing
End Sub
Public Sub CloseFunction()
Call Class_Terminate
End Sub
Public Sub callsendAndsave(mSubject, mHTMLBody, mTo, mToCC, mToBCC)
Call SendEmail(mSubject, mHTMLBody, mTo, mToCC, mToBCC)
Call AddItemToDraft(mSubject, mHTMLBody, mTo, mToCC, mToBCC)
End Sub

Private Sub Class_Terminate()
Set MsOutlook = Nothing

End Sub

*******************************************************************************

用VB build 一个DLL

再把dll拷贝到system32里

再用regsvr32进行注册

接下来是主要的java call dll了

先准备的dll和jar

-jacob-1.15-M3-x86.dll
-XXX.dll(VB生成的dll)
-jacob.jar

把jacob-1.15-M3-x86.dll拷贝到system32

再把vb生成的dll和jacob.jar导入java工程里

然后

写一个类

exp(我的dll名称是prjSendMail.dll,动态库里的类的名称是Class1,要调用的方法名是callsendAndsave):

*************************************************************************************

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;

public class EmailSenderImpl

{

ActiveXComponent pp;
Dispatch dpA ;

public void init()

{
pp= new ActiveXComponent("prjSendMail.Class1");

dpA = (Dispatch) pp.getObject();

}
public void sendEmail()

{
Dispatch.call(dpA, "callsendAndsave", subJect, bodyHtml, to, cc, bcc);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: