账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Java发送邮件老是报这错,怎么解决?
    35
    0

    javax.mail.AuthenticationFailedException: 530 Error: A secure connection is requiered(such as ssl)

    Properties prop = new Properties();
    
            prop.setProperty("mail.transport.protocol", "smtp"); // 设置邮件发送协议
            prop.setProperty("mail.host", "smtp.qq.com"); // 邮件服务器地址
    
            //prop.setProperty("mail.smtps.ssl.enable", "true"); // 邮件ssl验证
            prop.setProperty("mail.smtp.auth", "true"); // 邮件服务身份验证
            //prop.setProperty("mail.smtp.localhost", "127.0.0.1");
    
    
            Session session = Session.getDefaultInstance(prop);
    
            // 收件人电子邮箱
            String to = "xxxxx@qq.com";
    
            // 发件人电子邮箱
            String from = "xxxx@qq.com";
    
            try{
                // 创建默认的 MimeMessage 对象
                MimeMessage message = new MimeMessage(session);
    
                // Set From: 头部头字段
                message.setFrom(new InternetAddress(from));
    
                // Set To: 头部头字段
                message.addRecipient(Message.RecipientType.TO,
                        new InternetAddress(to));
    
                // Set Subject: 头部头字段
                message.setSubject("This is the Subject Line!");
    
                // 设置消息体
                message.setText("This is actual message");
    
                // 根据 Session 获取邮件传输对象
                Transport transport = session.getTransport();
                transport.connect("xxx@qq.com","xxxxx");
                // 发送消息
                transport.send(message);
                System.out.println("Sent message successfully....");
            }catch (MessagingException mex) {
                mex.printStackTrace();
            }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 繁华落尽与君老 普通会员 1楼

      在Java中,发送邮件可以使用JavaMail API或者第三方库,如JavaMailPlus或Smtp。以下是一些常见的错误和解决方案:

      1. 空的邮件地址: 如果你尝试发送的邮件地址为空,JavaMail API会抛出javax.mail.Address帆宽异常。确保你发送的邮件地址不为空,可以使用以下代码来检查:

      ```java try { EmailAddress emailAddress = new EmailAddress("test@example.com"); MailMessage message = new MailMessage(); message.setFrom(emailAddress); message.setTo("recipient@example.com"); message.setSubject("Test Email"); message.setText("Hello, World!");

      // 发送邮件
      Transport.send(message);
      System.out.println("Email sent successfully!");
      

      } catch (Address帆宽 e) { System.out.println("Failed to send email: " + e.getMessage()); } ```

      1. 未指定端口: 如果你的邮件服务器没有提供明文端口,JavaMail API会抛出javax.mail.MessageDeliveryException。例如,如果你的邮件服务器是使用SMTP协议,你需要在发送邮件时指定端口,可以使用以下代码:

      java try { Transport.send(message); System.out.println("Email sent successfully!"); } catch (MessageDeliveryException e) { System.out.println("Failed to send email: " + e.getMessage()); }

      1. 未关闭邮箱连接: 如果你在发送邮件之前没有关闭邮箱连接,JavaMail API会抛出javax.mail.MessagingException。例如,如果你使用的是JavaMailPlus,你需要在发送邮件后立即关闭邮箱连接,可以使用以下代码:

      java try { Transport.send(message); System.out.println("Email sent successfully!"); } catch (MessagingException e) { System.out.println("Failed to send email: " + e.getMessage()); }

      1. 邮件内容拼写错误: JavaMail API会忽略邮件内容的大小写,除非你明确指定要区分大小写。例如,如果你想发送一封以大写字母开头的邮件,你可以在setSubject方法中添加以下代码:

      java message.setSubject("Test Email Subject (Case-sensitive)");

      1. 邮件内容超出了邮件限制: 如果邮件的内容超出了邮件服务器的发送限制,JavaMail API会抛出java.util.mail.MalformedMessageException。例如,如果你的邮件内容超过了邮件服务器的最大长度,你可以在setSubject方法中添加以下代码:

      java message.setSubject("Test Email Subject");

      1. 邮件发送失败: 如果发送邮件失败,JavaMail API会抛出javax.mail.MessagingException。例如,如果你的邮件服务器拒绝发送邮件,你可以在发送邮件后立即抛出一个异常,如IOException,如下所示:

      java try { Transport.send(message); System.out.println("Email sent successfully!"); } catch (MessagingException e) { System.out.println("Failed to send email: " + e.getMessage()); throw new IOException("Failed to send email: " + e.getMessage()); }

      1. 邮件接收失败: 如果邮件发送失败,但邮件未被接收,JavaMail API会抛出javax.mail.AuthenticationException。例如,如果你的邮件服务器拒绝接收邮件,你可以在发送邮件后立即抛出一个异常,如IOException,如下所示:

      java try { Transport.send(message); System.out.println("Email sent successfully!"); } catch (AuthenticationException e) { System.out.println("Failed to send email: " + e.getMessage()); throw new IOException("Failed to send email: " + e.getMessage()); }

      以上代码示例中,我们首先创建了一个EmailAddress对象,然后创建了一个MailMessage对象。接着,我们设置了发件人、收件人、主题和邮件内容。最后,我们使用Transport.send方法发送邮件,如果发送成功,我们打印出"Email sent successfully!";如果发送失败,我们打印出"Failed to send email: "和抛出的异常。如果邮件未被接收,我们抛出一个异常并打印出"Failed to send email: "。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部