簡體   English   中英

如何從Java通過Outlook發送電子郵件

[英]how to send email through outlook from java

我需要在MS Outlook 2000結果msgs隊列中添加電子郵件(帶有附件)。 在我的公司中,我們使用一種稱為“假脫機機器人”(假脫機辦公套件)的軟件來從AS / 400服務器檢索數據。 我必須做同樣的事情,但是要從Java中的MySql數據庫讀取數據。

我找到了JDIC api,但它准備了消息窗口,但它不會自動發送電子郵件。 我不能使用Java郵件,因為由於管理上的限制,我需要使用Outlook客戶端。

有任何想法嗎?

謝謝。

我很確定Outlook有COM接口。 我環顧四周,找到了足夠的證據,但是沒有真正的文檔可以鏈接到。 Outlook Developer Center似乎是一個很好的起點。

使用Java COM Bridge(如JACOB)可以很直接地從Java使用COM。 我認為有可用的商業庫,但是JACOB相當容易使用-至少5年前我上次使用它時:)

您可以使用JACOB庫從Java中操縱Outlook,如前面的注釋中所述。 以下示例適用於Microsoft Outlook 2010和2013。此示例創建草稿電子郵件並將其保存到Outlook中的“草稿”文件夾中。

//---------------------------------------------------------------------
Map<String, Object> params = new HashMap<String, Object>();
param.put("subject", "Test subject");
param.put("body", "Please see attached.");

String attachment[] = new String[2];
attachment[0] = "C:/Test1.pdf";
attachment[1] = "C:/Test2.pdf";
param.put("attachments", attachment);

String to[] = new String[2];
to[0] = "test1@test.com";
to[1] = "test2@test.com";
param.put("to", to);

OutlookJACOB mail = new OutlookJACOB();
mail.createEmail(param);
//---------------------------------------------------------------------

import java.util.Map;

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

public class OutlookJACOB
{
    private ActiveXComponent ol;
    private Dispatch outlook;
    private Object mapi[] = new Object[1];
    private Object email[] = new Object[1];

    public OutlookJACOB()
    {
        mapi[0] = "MAPI";
        email[0] = 0;

        ol = new ActiveXComponent("Outlook.Application");
        outlook = ol.getObject();
        Dispatch.call(outlook,"GetNamespace",mapi).toDispatch();
    }

    public void createEmail(Map<String, Object> params)
    {
        Dispatch mail = Dispatch.call(outlook,"CreateItem",email).toDispatch();
        Dispatch.put(mail, "Subject", params.get("subject"));
        Dispatch.put(mail, "Body", params.get("body"));

        String to[] = (String[]) params.get("to");
        String attachments[] = (String[]) params.get("attachments");

        if(to != null)
        {
            if(to.length>0)
            {
                String _to = "";

                for(Object t : to)
                {
                    _to += t + ";";
                }

                Dispatch.put(mail, "To", _to);
            }
        }

        if(attachments != null)
        {
            if(attachments.length>0)
            {
                Dispatch attachs = Dispatch.get(mail, "Attachments").toDispatch();

                for(Object attachment : attachments)
                {
                    Dispatch.call(attachs, "Add", attachment);
                }
            }
        }

        Dispatch.call(mail, "Save");
    }
}

如果可以使用Exchange SMTP服務器,它將使您的生活變得更加輕松,因為它可以與JavaMail很好地配合使用。 系統管理員可以為此目的為您提供用戶名和密碼。

如果您真的必須使用客戶端,可以分享當前“假脫機機器人”如何工作的詳細信息嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM