通过Java程序发送邮件(无法将套接字转换为TLS错误)

通过Java程序发送邮件(无法将套接字转换为TLS错误),java,ubuntu,jakarta-mail,Java,Ubuntu,Jakarta Mail,我在一个随机站点上尝试了以下代码,以测试在ubuntu 16.04中从java发送电子邮件 我已经包括了mail.api、smtp.jar package com.javapapers.java; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import

我在一个随机站点上尝试了以下代码,以测试在ubuntu 16.04中从java发送电子邮件 我已经包括了mail.api、smtp.jar

    package com.javapapers.java;
    import java.util.Properties;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;

    public class JavaEmail {

    Properties emailProperties;
    Session mailSession;
    MimeMessage emailMessage;

    public static void main(String args[]) throws AddressException,
            MessagingException {

        JavaEmail javaEmail = new JavaEmail();

        javaEmail.setMailServerProperties();
        javaEmail.createEmailMessage();
        javaEmail.sendEmail();
    }

    public void setMailServerProperties() {

        String emailPort = "587";//gmail's smtp port

        emailProperties = System.getProperties();
        emailProperties.put("mail.smtp.port", emailPort);
        emailProperties.put("mail.smtp.auth", "true");
        emailProperties.put("mail.smtp.starttls.enable", "true");

    }

    public void createEmailMessage() throws AddressException,
            MessagingException {
        String[] toEmails = { "joe@javapapers.com" };
        String emailSubject = "Java Email";
        String emailBody = "This is an email sent by JavaMail api.";

        mailSession = Session.getDefaultInstance(emailProperties, null);
        emailMessage = new MimeMessage(mailSession);

        for (int i = 0; i < toEmails.length; i++) {
            emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmails[i]));
        }

        emailMessage.setSubject(emailSubject);
        emailMessage.setContent(emailBody, "text/html");//for a html email
        //emailMessage.setText(emailBody);// for a text email

    }

    public void sendEmail() throws AddressException, MessagingException {

        String emailHost = "smtp.gmail.com";
        String fromUser = "your emailid here";//just the id alone without @gmail.com
        String fromUserEmailPassword = "your email password here";

        Transport transport = mailSession.getTransport("smtp");

        transport.connect(emailHost, fromUser, fromUserEmailPassword);
        transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
        transport.close();
        System.out.println("Email sent successfully.");
    }

}
package com.javapapers.java;
导入java.util.Properties;
导入javax.mail.Message;
导入javax.mail.MessaginException;
导入javax.mail.Session;
导入javax.mail.Transport;
导入javax.mail.internet.AddressException;
导入javax.mail.internet.InternetAddress;
导入javax.mail.internet.mimessage;
公共类JavaEmail{
财产和财产;
会议邮递会议;
mimessage电子邮件;
公共静态void main(字符串args[])引发AddressException,
消息异常{
JavaEmail JavaEmail=新的JavaEmail();
javaEmail.setMailServerProperties();
javaEmail.createEmailMessage();
javaEmail.sendmail();
}
public void setMailServerProperties(){
字符串emailPort=“587”;//gmail的smtp端口
emailProperties=System.getProperties();
emailProperties.put(“mail.smtp.port”,emailPort);
emailProperties.put(“mail.smtp.auth”,“true”);
emailProperties.put(“mail.smtp.starttls.enable”、“true”);
}
public void createEmailMessage()引发AddressException,
消息异常{
字符串[]toEmails={”joe@javapapers.com" };
字符串emailSubject=“Java电子邮件”;
String emailBody=“这是一封由JavaMail api发送的电子邮件。”;
mailSession=Session.getDefaultInstance(emailProperties,null);
emailMessage=新的mimessage(mailSession);
for(int i=0;i
我得到以下错误(javac没有显示错误)

线程“main”javax.mail.MessaginException中出现异常:无法 将套接字转换为TLS

我只是linux的乞丐。请提供任何可能有帮助的命令。

请添加并检查

emailProperties.put("mail.smtp.ssl.trust", "smtp.gmail.com");
更新:
资源链接:

在课程结束时?
public void setMailServerProperties() {

    String emailPort = "587";//gmail's smtp port

    emailProperties = System.getProperties();
    emailProperties.put("mail.smtp.port", emailPort);
    emailProperties.put("mail.smtp.auth", "true");
    emailProperties.put("mail.smtp.starttls.enable", "true");
    emailProperties.put("mail.smtp.ssl.trust", "smtp.gmail.com"); // add here

}