java中的电子邮件回复

时间:2014-04-14 05:44:18

标签: java email

我正在处理电子邮件回复但无法找到任何解决方案。我需要在电子邮件失败或Java成功时获得响应。 码 - >

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

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

    try { 
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("from-email@gmail.com"));
        message.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse("to-email@gmail.com"));
        message.setSubject("Testing Subject");
        message.setText("Dear Mail Crawler,"
            + "\n\n No spam to my email, please!");

        Transport.send(message);

2 个答案:

答案 0 :(得分:1)

电子邮件是火灾和遗忘,这意味着一旦发送它,如果失败或者某些返回代码/值成功,就无法从中获取异常。

据我所知:

  • 要检查电子邮件是否失败,请继续检查收件箱,看看是否收到传递失败通知
  • 要检查电子邮件是否已发送和阅读,您可以附加由您有权访问的服务器上的链接提供的图像。图像的URL将属于某种类型:<img src="..../image/someuniqueid"...。然后,您可以将图像ID分配给收件人。当他们打开电子邮件时,您的服务器将与您在电子邮件中提供的唯一ID一起被点击。这将告诉您何时打开了电子邮件以及收件人。

答案 1 :(得分:0)

如果引发异常,您可以在异常处理中捕获它:

try{
....
  Transport.send(message);
....

}catch(Exception ex){
  //You can catch exception here and deal with it
}

一些流行的例外类型包括:

  • javax.mail.SendFailedException:无效的地址;嵌套异常是:javax.mail.SendFailedException:501:收件人地址必须包含域
  • 无法连接到SMTP主机:yourdomain.com,端口:25;嵌套异常是:java.net.ConnectException:与yourdomain.com的连接超时
  • 无法连接到SMTP主机:yourdomain.com,端口:25;嵌套异常是:java.net.ConnectException:连接被拒绝:连接