簡體   English   中英

Java發送郵件:javax.mail.AuthenticationFailedException

[英]Java Send Mail : javax.mail.AuthenticationFailedException

我試圖從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:空

問題是什么 ? 我在這里搜索了幾乎類似的問題。 但是他們沒有解釋我的情況

您需要驗證。 在數據庫中存儲“發件人”地址還不夠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM