如何通过Outlook发送电子邮件
问题描述:
我需要在我的MS Outlook 2000输出消息队列中添加电子邮件(附件)。在我的公司,我们使用一种叫做“短管理机器人”(spool office suite)的软件,它可以从AS/400服务器上检索数据。我必须这样做,但是从Java MySql数据库中读取数据。如何通过Outlook发送电子邮件
我找到了JDIC API,但它准备了消息窗口,但它不会自动发送电子邮件。我无法使用Java邮件,因为我需要使用Outlook客户端(由于管理限制)。
任何想法?
谢谢。
答
我很确定有一个用于Outlook的COM接口。我环顾了一下,发现了足够的证据,但没有可以链接到的真实文档。 Outlook Developer Center似乎是一个很好的起点。
从Java使用COM是非常直接的使用Java的COM桥,如JACOB。我认为有商业图书馆可用,但JACOB是非常直接使用 - 至少5年前,当我上次使用它:)
答
它会让你的生活更容易,如果你可以被允许使用Exchange SMTP服务器,因为这与JavaMail很好地协作。系统管理员可能会为您提供用于此特定用途的用户名和密码。
如果你真的必须使用客户端,你能分享一下当前的“短管机器人”是如何做的吗?
答
您可以使用前面的注释中所述的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] = "[email protected]";
to[1] = "[email protected]";
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");
}
}
这是一个起点,谢谢你。我找到了一个商业图书馆,但它真的很贵! – mauretto 2011-02-16 11:08:40
在网上冲浪了很多后,我终于找到了[snippet](http://sourceforge.net/projects/jacob-project/forums/forum/375945/topic/3822393“链接”)...它似乎工作! – mauretto 2011-02-16 14:08:07