[英]Sending Verification Email from Java Program - AuthenticationError
我正在做一個學校項目,我正在嘗試在創建帳戶時發送一封驗證電子郵件,但即使我的憑據正確,我也會不斷收到 AuthenticationError。
package classesMain;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendingEmail {
private String email;
private String code;
public SendingEmail(String email, String code) {
this.email = email;
this.code = code;
}
public void send() {
String fromEmail ="**MY EMAIL HERE**";
String password="**MY PASSWORD HERE**";
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");
Authenticator signOn = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(fromEmail,password);
}
};
Session sess = Session.getInstance(props, signOn);
MimeMessage message = new MimeMessage(sess);
try {
message.setFrom(new InternetAddress(fromEmail));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
message.setSubject("Canadian Voting Portal- Email Verification Link");
message.setText("Click on this link to verify your Canadian Voting Portal email."
+ "If you did not request this email please call 1-888-888-8888"
+ "\n\n Link: "+"http://localhost:8080/CapstoneProject/EmailServlet?email="+email+"&code="+code);
Transport.send(message);
System.out.println("Message Sent");
} catch (MessagingException e) {
// TODO Auto-generated catch block
System.out.println("ERROR");
e.printStackTrace();
}
}
}
錯誤日志:
MySQL JDBC Driver Registered!
Connection made to DB!
ERROR
javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials bm35-20020a05620a19a300b006b61b2cb1d2sm57362qkb.46 - gsmtp
at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:965)
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:876)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:780)
at javax.mail.Service.connect(Service.java:388)
at javax.mail.Service.connect(Service.java:246)
at javax.mail.Service.connect(Service.java:195)
at javax.mail.Transport.send0(Transport.java:254)
at javax.mail.Transport.send(Transport.java:124)
at classesMain.SendingEmail.send(SendingEmail.java:54)
at servlets.CreateAccountServlet.doPost(CreateAccountServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:681)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1722)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
我已經嘗試了一些不同的 Authenticator 變體,但似乎沒有任何效果! 謝謝!
對於處於相同情況的任何人,我將我的電子郵件硬編碼到密碼驗證器和電子郵件中。 然后,我不得不為“郵件”和“Windows 計算機”獲取應用程序密碼,無論出於何種原因,它也必須進行硬編碼,否則它將不起作用.. 不知道為什么,但那是我的解決方案! 謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.