Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java使用本地邮件客户端自动发送邮件_Java_Email - Fatal编程技术网

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

在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&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。我知道客户端将位于包含邮件服务器的本地网络中,但我不知道它的“名称”。该应用程序将在各种完全独立的网络上运行。我只知道每个网络都会有一个邮件服务器,但我不知道它的地址。有没有什么简单的方法可以从注册表中检索这些信息?您需要更多地了解这些网络,不要假设它们的配置。询问管理员,就您的程序将如何与环境交互达成协议。如果无法找到答案,我将不得不要求用户提供此信息。我希望以某种方式从用户的邮件客户端提取这些信息。