有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

验证Java发送邮件:javax。邮政身份验证失败异常

我试图从java应用程序发送邮件。我没有使用任何身份验证,因为身份验证后我已经将发件人地址存储在数据库中。这是一封预定的电子邮件,因此我在发送邮件时无法获取密码。因此,我在验证后首先将电子邮件ID存储在一个表中,然后安排电子邮件。 请检查以下代码

public void sendMessage(EmailMessage emailMessage) {
    Properties props = mailConfiguration.getProps();
    Session session = Session.getInstance(props);
    MimeMessage mimeMessage = new MimeMessage(session);
    try {
        mimeMessage.setFrom(new InternetAddress(emailMessage.getFromAddress()));
        mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(emailMessage.getToAddress()));
        mimeMessage.setSubject(emailMessage.getSubject());
        mimeMessage.setContent(emailMessage.getMessage(), "text/html");
        mimeMessage.setSentDate(new Date());
        Transport.send(mimeMessage);
        LocalDateTime localDateTime = LocalDateTime.now();
        Timestamp sendTime = Timestamp.valueOf(localDateTime);
        emailMessage.setGeneratedTime(sendTime);
        emailMessage.setStatus(MessageStatus.SENT);
    } catch (AuthenticationFailedException e) {
        log.error("Username and Password not accepted." + e.getMessage(), e);
        emailMessage.setStatus(MessageStatus.ERROR);
    } catch (MessagingException e) {
        log.error("An exception occurred while sending mail from [" + emailMessage.getFromAddress() + "] to [" + emailMessage.getToAddress() + "] : " + e.getMessage(), e);
        emailMessage.setStatus(MessageStatus.ERROR);
    }
    log.info("Changing message status of Email Message " + emailMessage.getId() + " to " + emailMessage.getStatus());
    emailMessageRepository.save(emailMessage);
}

电子邮件配置如下所示

@Configuration
public class MailConfiguration {

Properties props = new Properties();

 public MailConfiguration() {
    props.put("mail.transport.protocol", "smtp");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.starttls.required", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");
    props.put("mail.debug", "false");
 }

 public Properties getProps() {
    return props;
 }
}

问题是我不能用这个发送电子邮件。相反,我得到了一个例外,比如

javax.mail.AuthenticationFailedException: null

有什么问题? 我在这里搜索了几乎相似的问题。但他们没有解释我的情况


共 (1) 个答案

  1. # 1 楼答案

    您需要进行身份验证。在数据库中存储发件人地址是不够的