Java使用本地邮件客户端自动发送邮件
在java程序中,我希望通过用户的本地邮件客户端自动发送邮件 我使用以下代码打开客户机并填写所需字段,但是现在如何在没有任何用户交互的情况下自动发送Java使用本地邮件客户端自动发送邮件,java,email,Java,Email,在java程序中,我希望通过用户的本地邮件客户端自动发送邮件 我使用以下代码打开客户机并填写所需字段,但是现在如何在没有任何用户交互的情况下自动发送 private void sendMail() throws MessagingException { try { Desktop.getDesktop().mail(new URI("mailto:abc@def.com?subject=someSubject&cc=aa@bb.cc,dd@dd.ds&am
private void sendMail() throws MessagingException {
try {
Desktop.getDesktop().mail(new URI("mailto:abc@def.com?subject=someSubject&cc=aa@bb.cc,dd@dd.ds&bcc=x@y.zz&body=someBodyText"));
} catch (Exception e) {
e.printStackTrace();
}
}
基本上,我想发送不离开公司网络的邮件。答案是
基本上,您需要一个邮件帐户(通常是用户名+密码),还需要mail SP的SMTP服务器地址,该地址通常位于其网站上。我找到了一种处理outlook的方法,至少遵循以下指南: 基本上我使用的是OleClientSite类来调用outlook。然后我使用oleAutomation类发送邮件 代码段:
Shell shell = new Shell(Display.getDefault());
OleFrame frame = new OleFrame(shell, SWT.NONE);
// This should start outlook if it is not running yet
OleClientSite site = new OleClientSite(frame, SWT.NONE, "OVCtl.OVCtl");
site.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
// Now get the outlook application
OleClientSite site2 = new OleClientSite(frame, SWT.NONE,
"Outlook.Application");
OleAutomation outlook = new OleAutomation(site2);
//
OleAutomation mail = invoke(outlook, "CreateItem", 0 /* Mail item */)
.getAutomation();
setProperty(mail, "To", "aav@gmail.com"); /*
* Empty but could also be
* predefined
*/
setProperty(mail, "Bcc", "test@gmail.com"); /*
* Empty but could also be
* predefined
*/
setProperty(mail, "BodyFormat", 2 /* HTML */);
setProperty(mail, "Subject", "Top News for you");
setProperty(mail, "HtmlBody",
"<html>Hello<p>, please find some infos here.</html>");
invoke(mail, "Send" /* or "Send" */);
Shell Shell=newshell(Display.getDefault());
油框架=新油框架(外壳,SWT.无);
//如果outlook尚未运行,则应启动它
OleClientSite=新的OleClientSite(框架,SWT.NONE,“OVCtl.OVCtl”);
地点:多佛尔布(OLE.OLEIVERB_INPLACEACTIVATE);
//现在获取outlook应用程序
OleClientSite2=新的OleClientSite(框架,SWT.NONE,
“Outlook.Application”);
OleAutomation outlook=新的OleAutomation(站点2);
//
OleAutomation mail=invoke(outlook,“CreateItem”,0/*邮件项目*/)
.getAutomation();
setProperty(邮件,“收件人”aav@gmail.com"); /*
*空的,但也可能是空的
*预定义的
*/
setProperty(邮件,“密件抄送”和“test@gmail.com"); /*
*空的,但也可能是空的
*预定义的
*/
setProperty(邮件,“BodyFormat”,2/*HTML*/);
setProperty(邮件,“主题”,“你的头条新闻”);
setProperty(邮件,“HtmlBody”,
“你好,请在这里找到一些信息。”);
调用(邮件、“发送”/*或“发送”*/);
没有适用于每个邮件客户端的API,因此最好的选择是直接使用和发送邮件。我已经在玩弄Java邮件API,我的主要问题是我不知道客户端机器上将运行哪个邮件服务器。以下属性应使用哪些值:mail.smtp.host。我知道客户端将位于包含邮件服务器的本地网络中,但我不知道它的“名称”。该应用程序将在各种完全独立的网络上运行。我只知道每个网络都会有一个邮件服务器,但我不知道它的地址。有没有什么简单的方法可以从注册表中检索这些信息?您需要更多地了解这些网络,不要假设它们的配置。询问管理员,就您的程序将如何与环境交互达成协议。如果无法找到答案,我将不得不要求用户提供此信息。我希望以某种方式从用户的邮件客户端提取这些信息。