Как отправить электронное письмо из Outlook через Java?

Я застрял за корпоративным брандмауэром, который не позволит мне отправлять электронную почту с помощью обычных средств, таких как Java Mail API или Apache Commons Email, даже другим людям внутри организации (это все, что я хочу в любом случае). Но мой Outlook 2010, очевидно, может отправлять эти письма. Мне было интересно, есть ли способ автоматизировать Outlook 2010 с помощью Java-кода, чтобы Outlook мог отправлять электронные письма? Я знаю, что такие вещи, как "mailto", можно использовать для всплывающего диалогового окна "Перспектива отправки по умолчанию" с предварительно заполненной информацией, но я ищу способ, чтобы операция отправки происходила за кулисами. Спасибо за любую информацию.

Ответ 1

Вы можете отправлять электронную почту через Outlook с помощью javamail использовать конфигурации, описанные в официальный сайт Outlook.

Вот небольшой демонстрационный код

public static void main(String[] args) {
    final String username = "your email";  // like [email protected]
    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 [email protected]
        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

Ответ 2

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

Ответ 3

Я не думаю, что есть способ сделать то, что вы хотите, используя Outlook.

Предположительно, ваш почтовый сервер также находится за корпоративным брандмауэром. Если вы используете Outlook для своего клиента, вы, вероятно, используете Exchange для своего сервера. Exchange можно настроить для поддержки стандартного SMTP-протокола для отправки почты, что позволит использовать JavaMail. Если вы не можете настроить сервер Exchange для поддержки SMTP, вы все равно сможете использовать Exchange Web Services. Если это не сработает, возможно, вам потребуется использовать одну из продуктов сторонних разработчиков JavaMail, которая поддерживает собственный почтовый протокол Microsoft.