如何通过Java从Outlook发送电子邮件?

时间:2016-08-30 03:29:44

标签: java apache email outlook javamail

我被困在一个企业防火墙后面,这个防火墙不允许我通过Java Mail API或Apache Commons Email之类的传统方式发送电子邮件,甚至是组织内部的其他人(这也是我想要的)。但我的Outlook 2010显然可以发送这些电子邮件。我想知道是否有办法通过Java代码自动化Outlook 2010,以便Outlook可以发送电子邮件?我知道像" mailto"可以使用弹出预设填充信息的默认Outlook发送对话框,但我正在寻找一种方法让发送操作发生在幕后。谢谢你的任何信息。

3 个答案:

答案 0 :(得分:4)

您可以使用javamail上描述的配置使用Outlook's official site.

中描述的配置通过Outlook发送电子邮件

这是一个小型演示代码

public static void main(String[] args) {
    final String username = "your email";  // like yourname@outlook.com
    final String password = "*********";   // password here

    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp-mail.outlook.com");
    props.put("mail.smtp.port", "587");

    Session session = Session.getInstance(props,
      new javax.mail.Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
      });
    session.setDebug(true);

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(username));
        message.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse("receiver mail"));   // like inzi769@gmail.com
        message.setSubject("Test");
        message.setText("HI you have done sending mail with outlook");

        Transport.send(message);

        System.out.println("Done");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }
}


注意:我使用Javamail API 1.5.6

对此进行了测试

答案 1 :(得分:0)

Process p = Runtime.getRuntime().exec("cmd /C start outlook ");

答案 2 :(得分:0)

我认为没有任何方法可以使用Outlook做你想做的事。

据推测,您的邮件服务器也位于企业防火墙之后。如果您为客户端使用Outlook,则可能使用Exchange作为服务器。可以将Exchange配置为支持用于发送邮件的标准SMTP协议,这将允许使用JavaMail。如果您无法将Exchange服务器配置为支持SMTP,则仍可以使用Exchange Web Services。如果这不起作用,您可能需要使用支持Microsoft专有邮件协议的JavaMail Third Party Products之一。