[英]How to send an email from Outlook via Java?
我被困在公司防火墙后面,它不允许我通过 Java Mail API 或 Apache Commons Email 等传统方式发送电子邮件,甚至无法向组织内的其他人发送电子邮件(无论如何,这就是我想要的)。 但是我的 Outlook 2010 显然可以发送这些电子邮件。 我想知道是否有办法通过 Java 代码使 Outlook 2010 自动化,以便 Outlook 可以发送电子邮件? 我知道像“mailto”这样的东西可以用来弹出带有预填充信息的默认 Outlook 发送对话框,但我正在寻找一种方法来让发送操作在幕后发生。 感谢您提供任何信息。
您可以使用javamail
通过 Outlook 发送电子邮件,使用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
对此进行了测试
Process p = Runtime.getRuntime().exec("cmd /C start outlook ");
我不认为有任何方法可以使用 Outlook 做您想做的事情。
大概您的邮件服务器也在公司防火墙后面。 如果您的客户端使用 Outlook,则您的服务器可能使用 Exchange。 Exchange 可以配置为支持用于发送邮件的标准 SMTP 协议,这将允许使用 JavaMail。 如果您无法将 Exchange 服务器配置为支持 SMTP,您仍然可以使用Exchange Web 服务。 如果这不起作用,您可能需要使用支持 Microsoft 专有邮件协议的JavaMail 第三方产品之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.