Javamail发送未经身份验证的加密电子邮件

时间:2020-09-07 03:35:13

标签: authentication encryption jakarta-mail

我使javamail可以处理用户,加密和身份验证。这是我设置系统属性并在存在身份验证和加密时进行连接的方式。

      mailServerProperties = System.getProperties();
      mailServerProperties.put("mail.smtp.auth", "true");
      if (encryption.equals(TLS_ENCRYPTION)) {
            mailServerProperties.put("mail.smtp.starttls.enable", "true");

      } else {
            mailServerProperties.put("mail.smtp.ssl.enable", "true");
            mailServerProperties.put("mail.smtp.socketFactory.port", ei.getSMTPPort());
            mailServerProperties.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");

        }

        mailServerProperties.put("mail.smtp.auth.mechanisms", "auto");
        // Connect
        getMailSession = Session.getDefaultInstance(mailServerProperties, null);
        generateMailMessage = new MimeMessage(getMailSession);
        generateMailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(ei.getToaddr()));
        generateMailMessage.setFrom(new InternetAddress(ei.getUser()));
        generateMailMessage.setSubject(ei.getSubject());
        generateMailMessage.setText(ei.getMessage());

        Transport transport = getMailSession.getTransport("smtp");
        transport.connect(server, user, pass);
        transport.sendMessage(generateMailMessage, generateMailMessage.getAllRecipients());
        transport.close();

transport.connect方法需要密码。当SMTP没有任何用户名和密码时,如何连接?我必须使用虚拟用户和虚拟密码吗?

不存在身份验证时,我必须更改哪些系统属性?这就是我的想法。

mailServerProperties.put(“ mail.smtp.auth”,“ true”); ->更改为 false mailServerProperties.put(“ mail.smtp.auth.mechanisms”,“ auto”); ->未设置此属性

非常感谢。

TMH

0 个答案:

没有答案