我将 mail.transport 属性设置为 smtps,除了连接到 smtps 服务器的非常基本的信息:
Properties p = new Properties();
p.put("mail.transport.protocol", "smtps");
p.put("mail.smtps.host", "smtp.gmail.com");
p.put("mail.smtps.auth", true);
Session s = Session.getDefaultInstance(p,new Authenticator(){/*authenticator impl.*/});
MimeMessage mm = new MimeMessage(s); /*then i set the subject, then the body... */
mm.setRecipients(RecipientType.TO, "myfakeaddress@gmail.com");
现在,我尝试发送我的信息。我想试试静态方法;使用实例方法sendMessage
它工作正常。这里是:
Transport.send(mm);
它尝试连接到 smtp 服务器,而不是 smtps 服务器。进入 javamail 的实现(顺便说一句,我的版本是 1.4.5)我发现失败的方法是:
transport = s.getTransport(addresses[0]);
因为它返回一个SMTPTransport
而不是SMTPSSLTransport
; 这即使我已将mail.transport.protocol
属性设置为 smtps,正如您在第二行代码中看到的那样。Transport.send
我的程序是否有问题,或者无法通过静态方法发送 smtps 邮件?