【问题标题】:How to send an email from Outlook via Java?如何通过 Java 从 Outlook 发送电子邮件?
【发布时间】:2017-01-06 04:46:43
【问题描述】:

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

【问题讨论】:

    标签: java apache email outlook jakarta-mail


    【解决方案1】:

    您可以通过javamail 使用Outlook's official site. 中描述的配置通过Outlook 发送电子邮件

    这里是小演示代码

    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import java.util.Properties;
    
    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测试了这个

    【讨论】:

    • 我认为OP并不是要使用微软的邮件服务器,而是微软的邮件客户端程序。令人困惑的是,两者都被命名为“outlook”。
    • 导入 javax.mail.*;导入 javax.mail.internet.Internet 地址;导入 javax.mail.internet.MimeMessage;导入 java.util.Properties;
    【解决方案2】:

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

    大概您的邮件服务器也在公司防火墙后面。如果您将 Outlook 用于您的客户端,那么您可能正在将 Exchange 用于您的服务器。 Exchange 可以配置为支持标准 SMTP 协议来发送邮件,这将允许使用 JavaMail。如果您无法将 Exchange 服务器配置为支持 SMTP,您仍然可以使用 Exchange Web Services。如果这不起作用,您可能需要使用支持 Microsoft 专有邮件协议的JavaMail Third Party Products 之一。

    【讨论】:

      【解决方案3】:
      Process p = Runtime.getRuntime().exec("cmd /C start outlook ");
      

      【讨论】:

      • 这不会启动 Outlook GUI 吗?这似乎与 OP 正在寻找的相反。抱歉,我不能贡献更多。
      猜你喜欢
      • 1970-01-01
      • 2016-05-11
      • 2011-09-14
      • 2012-03-03
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 2023-03-06
      • 2013-11-23
      相关资源
      最近更新 更多