我被困在一个企业防火墙后面,这个防火墙不允许我通过Java Mail API或Apache Commons Email之类的传统方式发送电子邮件,甚至是组织内部的其他人(这也是我想要的)。但我的Outlook 2010显然可以发送这些电子邮件。我想知道是否有办法通过Java代码自动化Outlook 2010,以便Outlook可以发送电子邮件?我知道像" mailto"可以使用弹出预设填充信息的默认Outlook发送对话框,但我正在寻找一种方法让发送操作发生在幕后。谢谢你的任何信息。
答案 0 :(得分:4)
您可以使用javamail
上描述的配置使用Outlook's official site.
这是一个小型演示代码
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之一。