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

如何解决无法将套接字转换为TLS的问题

东方涛
2023-03-14

这是我在那个盒子里提到的代码。所以请检查这个代码并给我正确的答案。此代码完全在我的系统中运行,运行成功并显示生成成功,但邮件ID中未发送消息。所以请帮帮我。

提前感谢

这是我的密码。

    import javax.mail.*;
       import javax.mail.internet.*;
      import java.util.*;

        public class Main1
        {
          String  d_email = "xyz@ibm.com",
        d_password = "*******",
        d_host = "blr-outlook.ibm.com",
        d_port  = "25",
        m_to = "xyz@ibm.com",
        m_subject = "Testing",
        m_text = "Hey, this is the testing email using blr-outlook.ibm.com";
           public static void main(String[] args)
          {
     String[] to={"xyz@ibm.com"};
             String[] cc={"xyz@ibm.com"};
           String[] bcc={"xyz@ibm.com"};
    //This is for google
             Main1.sendMail("xyz@ibm.com", "password", "blr-outlook.ibm.com", 
                  "25", "true", "true", 
                  true, "javax.net.ssl.SSLSocketFactory", "false", 
                  to, cc, bcc, 
                  "hi baba don't send virus mails..", 
                  "This is my style...of reply..If u send virus mails..");
         }

         public synchronized static boolean sendMail(
    String userName, String passWord, String host, 
    String port, String starttls, String auth, 
    boolean debug, String socketFactoryClass, String fallback, 
    String[] to, String[] cc, String[] bcc, 
    String subject, String text) 
        {
    Properties props = new Properties();
    //Properties props=System.getProperties();
    props.put("mail.smtp.user", userName);
    props.put("mail.smtp.host", host);
    if(!"".equals(port)) {
        props.put("mail.smtp.port", port);
    }
    if(!"".equals(starttls)) {
        props.put("mail.smtp.starttls.enable",starttls);
    }
    props.put("mail.smtp.auth", auth);
    if(debug) {
        props.put("mail.smtp.debug", "true");
    } else {
        props.put("mail.smtp.debug", "false");         
    }
    if(!"".equals(port)) {
        props.put("mail.smtp.socketFactory.port", port);
    }
    if(!"".equals(socketFactoryClass)) {
        props.put("mail.smtp.socketFactory.class",socketFactoryClass);
    }
    if(!"".equals(fallback)) {
        props.put("mail.smtp.socketFactory.fallback", fallback);
    }

    try
    {
        Session session = Session.getDefaultInstance(props, null);
        session.setDebug(debug);
        MimeMessage msg = new MimeMessage(session);
        msg.setText(text);
        msg.setSubject(subject);
        msg.setFrom(new InternetAddress("blr-outlook.ibm.com"));
        for(int i=0;i<to.length;i++) {
            msg.addRecipient(Message.RecipientType.TO, 
                             new InternetAddress(to[i]));
        }
        for(int i=0;i<cc.length;i++) {
            msg.addRecipient(Message.RecipientType.CC, 
                             new InternetAddress(cc[i]));
        }
        for(int i=0;i<bcc.length;i++) {
            msg.addRecipient(Message.RecipientType.BCC, 
                             new InternetAddress(bcc[i]));
        }
        msg.saveChanges();
        Transport transport = session.getTransport("smtp");
        transport.connect(host, userName, passWord);
        transport.sendMessage(msg, msg.getAllRecipients());
        transport.close();
        return true;
          }
    catch (Exception mex)
           {
        return false;
            }
         }

      }

共有1个答案

程祯
2023-03-14

网上有这么多的例子。。。甚至tutorialspoint都有很好的示例说明。。。。在这里查看。。。。。

http://www.tutorialspoint.com/javamail_api/javamail_api_overview.htm

我已经将java mail api用于邮件目的,并且它的效果足够好。。。。。我不在家,所以现在无法与您共享代码。。。。

编辑:

    import java.util.Properties;

    import javax.mail.Message;

    import javax.mail.MessagingException;

    import javax.mail.PasswordAuthentication;

    import javax.mail.Session;

    import javax.mail.Transport;

    import javax.mail.internet.InternetAddress;

    import javax.mail.internet.MimeMessage;


    public class SendMailTLS {

public static void main(String[] args) {

    final String username = "username@gmail.com";
    final String password = "password";

    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 session = Session.getInstance(props,
      new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
      });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("from-email@gmail.com"));
        message.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse("to-email@gmail.com"));
        message.setSubject("Testing Subject");
        message.setText("Dear Mail Crawler,"
            + "\n\n No spam to my email, please!");

        Transport.send(message);

        System.out.println("Done");


        } catch (MessagingException e) {

    throw new RuntimeException(e);

        }

    }

    }

试试这个......身份验证不是强制性的......如果您使用任何类型的应用程序,您需要更改您的gmail帐户设置以允许访问不太安全的应用程序......

 类似资料:
  • 我用Javax发送邮件有问题。我们使用gmail大约4年了,用我们的Java软件发送邮件。现在我得到了以下错误: 以下是我的gmail设置: 我还尝试了其他邮件服务器(O365、Strato),但收到了相同的错误。

  • 我正在尝试通过Gmail SMTP服务器使用JavaMail发送电子邮件。代码如下: 返回此错误: 无法将套接字转换为TLS; 完整的堆栈跟踪: 异常线程"main"javax.mail.RuntimeException:ervice.connectMessagingException:无法将套接字转换为TLS;嵌套异常是:ervice.java:176SSLHandshakeException:

  • 我收到了错误:org.springframework.mail。MailSendException:邮件服务器连接失败;嵌套的异常是javax.mail。MessaginException:无法将套接字转换为TLS;嵌套的异常是:javax.net.ssl。SSLHandshakeException:没有合适的协议(协议被禁用或密码套件不合适)。失败的消息:javax.mail。MessaginE

  • 我有另一个转换套接字异常。Stackoverflow将我和相关答案联系起来,我已经做了人们建议的所有事情。 这里有异常描述: 线程“main”javax中出现异常。邮政MessaginException:无法将套接字转换为TLS;嵌套的例外是:java。网SocketException:java。安全NoSuchAlgorithmException:在com上构造实现时出错(算法:Default,

  • 我正在使用JavaMail API发送一封包含文本文件的电子邮件。我写的这段代码上周运行良好,但是我今天登录并运行程序并在底部附加的图像中收到错误。我更新到最新版本的java 8,仍然收到此错误。(我必须使用java 8进行项目工作)我查看了此更新的java 8补丁说明,看到根CA证书被删除,我不知道该怎么想/做。我发布这个问题是因为我在其他大量有关此问题的问题中找不到任何解决方案。 我正在运行J

  • 在一个应用程序中,我使用java实现了邮件发送逻辑。我使用了smtp.gmail。com587端口,具有有效的gmail id和密码。在开发环境中,一切正常。但在生产环境中,我需要使用不同的邮件服务器,例如smtp.xyz。在端口25上输入有效的电子邮件id和密码。 当我继续使用以下代码启用SSL时: 我出错了