使用javamail正确发送电子邮件

时间:2014-12-03 01:11:31

标签: java email javamail

我有一个恼人的问题。你看,我创建了一个程序,它基本上可以在程序运行的其他计算机上发送文件,获取文件和运行命令。我这样做是通过使用IMAP通过未受保护的电子邮件地址交换消息和文件。好吧,我的学校没有某种在线资源库来交换文件或向其他人发送信息,所以我纯粹是为了我的中学。好吧,考虑到当我在我的笔记本电脑上运行程序然后我母亲的电脑上运行时,它可以工作,但是我无法从学校发送任何类型的信息,我想它可能需要与学校防火墙。注意:我可以连接到电子邮件,但我无法向其发送任何类型的电子邮件。我得到一个" java.net.SocketException:连接重置"当我尝试点击"发送文件","抓取文件"或""命令"在学校的按钮,因为那些都涉及发送消息。编辑 - 我还没有发布图片,因为我刚加入StackOverflow。对不起:(但我无法向您展示该计划的样子。再次编辑 - 再投票一次,我可以添加图片!

嗯,这是我用来发送简单消息的代码,例如错误消息或运行命令的请求。我也使用相同的方法发送文件:

public void sendMessage(String subject,String message) {
    try {
         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 sesh = Session.getInstance(props,
                  new javax.mail.Authenticator() {
                     protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(email, pass);
                     }
                  });
        MimeMessage msg = new MimeMessage(sesh);
        msg.setFrom(new InternetAddress(EmailGUI.gui.getEmail()));
        msg.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
        msg.setSubject(EmailGUI.gui.encrypt(subject + "AbC" + uuid.toString().replaceAll("-","")));
        Multipart body = new MimeMultipart();
        MimeBodyPart attach = new MimeBodyPart();
        attach.setContent(encrypt(message), "TEXT/PLAIN");
            body.addBodyPart(attach);
            msg.setContent(body);
            Transport.send(msg);
            field.setText("");
    } catch (MessagingException e) {
        out.write("Failed to send message.");
        e.printStackTrace();
    }

}

关于我可能做错的任何想法? (如果有帮助,我的学校使用Java 7 Update 62)

0 个答案:

没有答案