当前位置: 首页 > 知识库问答 >
问题:

Android JavaX-Mail具有SSL-Handshake-Exception

阎昌勋
2023-03-14
public class GMailSender extends javax.mail.Authenticator {
    static {
        Security.addProvider(new JSSEProvider());
    }
    private final String user;
    private final String password;
    private final Session session;

    public GMailSender(String user, String password) {
        this.user = user;
        this.password = password;
        Properties props = new Properties();
        props.setProperty("mail.smtp.host", "xtenxion.com");
        props.setProperty("mail.smtp.ssl.enable", "true");
        props.setProperty("mail.transport.protocol", "smtp");
        props.put("mail.smtp.user", user);
        props.setProperty("mail.smtp.ssl.trust", "xtenxion.com");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
        props.setProperty("mail.smtp.quitwait", "false");
        session = Session.getDefaultInstance(props, this);
    }

    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(user, password);
    }

    public synchronized Boolean sendMail(String subject, String body, String sender, String recipients) {
        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(sender));
            message.addRecipient(Message.RecipientType.TO,new InternetAddress(recipients));
            message.setSubject(subject);
            message.setText(body);
            Transport.send(message);
            Log.e("SendMail","message sent successfully....");
            return true;
        } catch (Exception e) {
            Log.e("SendMail", e.getMessage(), e);
            return false;
        }
    }

}

有此例外:

更新:

public class GMailSender extends javax.mail.Authenticator {
    static {
        Security.addProvider(new JSSEProvider());
    }

    private final Session session;

    public GMailSender(String user, String password) {
        Properties props = new Properties();
        props.setProperty("mail.smtp.host", "xtenxion.com");
        props.setProperty("mail.smtp.ssl.trust", "xtenxion.com");
        props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.setProperty("mail.smtp.socketFactory.fallback", "false");
        props.setProperty("mail.smtp.port", "465");
        props.setProperty("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.auth", "true");
        props.put("mail.debug", "true");
        props.put("mail.store.protocol", "pop3");
        props.put("mail.transport.protocol", "smtp");
        session = Session.getInstance(props,
                new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(user, password);
                    }
                });
        session.setDebug(true);
    }



    public synchronized Boolean sendMail(String subject, String body, String sender, String recipients) {
        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(sender));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
            message.setSubject(subject);
            message.setText(body);
            Transport.send(message);
            Log.e("SendMail", "message sent successfully....");
            return true;
        } catch (Exception e) {
            Log.e("SendMail", "Error " + e.getMessage());
            return false;
        }
    }

}

例外情况:

共有1个答案

左丘修齐
2023-03-14
String host = "smtp.gmail.com";
String username = "user";
String password = "passwd";
Properties props = new Properties();
props.setProperty("mail.smtp.host", host);
props.setProperty("mail.smtp.ssl.enable", "true");
// set any other needed mail.smtp.* properties here
Session session = Session.getInstance(props);
MimeMessage msg = new MimeMessage(session);
// set the message content here
Transport.send(msg, username, password);
 类似资料:
  • rtmp 1.0规范中,指定了RTMP的握手协议: c0/s0:一个字节,说明是明文还是加密。 c1/s1: 1536字节,4字节时间,4字节0x00,1528字节随机数 c2/s2: 1536字节,4字节时间1,4字节时间2,1528随机数和s1相同。 这个就是srs以及其他开源软件所谓的simple handshake,简单握手,标准握手,FMLE也是使用这个握手协议。 Flash播放器连接服

  • 现在不确定如何使用camel和spring boot连接这两个,因为带有registry的http://camel.apache.org/mail.html的示例不是100%清楚

  • 问题内容: 我今天从Java 1.6升级到Java 1.7。从那时起,当我尝试通过SSL建立到我的Web服务器的连接时发生错误: 这是代码: 这只是一个测试项目,这就是为什么我允许和使用不受信任的证书以及代码的原因: 问题答案: Java 7引入了默认情况下启用的SNI支持。我发现某些配置错误的服务器会在SSL握手中发送“无法识别的名称”警告,大多数客户端会忽略此警告… Java除外。如@Bob

  • 本文向大家介绍java Mail邮件接收工具类,包括了java Mail邮件接收工具类的使用技巧和注意事项,需要的朋友参考一下 下面是一个邮件接收的工具类,有点长!!! 邮件接收与工具类的使用,有好几种邮件接收的写法!: 看了很多网上其他代码,pop3Server的值是pop.mail.163.com,但是试了试不成功,还有 user的值既可以是带有 username@...com也可以是user

  • 0个 我正在尝试从Java连接到邮件服务器。我已经能够使用相同的代码成功地从Java连接到许多邮件服务器,包括Gmail、Rackspace、GoDaddy和其他,但是无论我尝试什么设置,这个都不起作用。 此操作失败,javax.mail.MessaginException:无法将套接字转换为TLS;嵌套异常为:javax.net.ssl.SSLException:无法识别的ssl消息,纯文本连接

  • 基于Web的应用程序通常需要具有向用户/客户端发送邮件的功能。 Flask-Mail扩展使得与任何电子邮件服务器建立简单的界面变得非常容易。 首先,应该在pip实用程序的帮助下安装Flask-Mail扩展。 pip install Flask-Mail 然后需要通过设置以下应用程序参数的值来配置Flask-Mail。 Sr.No 参数和描述 1 MAIL_SERVER 电子邮件服务器的名称/ I