gpt4 book ai didi

tomcat - 在 tomcat 中几个小时后发送 java 电子邮件失败

转载 作者:行者123 更新时间:2023-11-28 22:51:48 25 4
gpt4 key购买 nike

我使用 Amazon SES 服务在 tomcat6 中发送电子邮件。它只能发送电子邮件成功几个小时,然后发送电子邮件失败。如果我重新启动 tomcat6,它会在几个小时内再次发送电子邮件成功,然后失败。这个问题困扰了我好几天了。
有没有人遇到过这个问题?请帮助我,谢谢。

//发送邮件代码:

public class MyAuthenticator extends Authenticator {
String userName = null;
String password = null;
public MyAuthenticator() {
}

public MyAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}

protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
}


//send email
public class SimpleMailSender {
public final static String HOST = "email-smtp.us-east-1.amazonaws.com";
public final static int PORT = 25;
public final static String FROM_ADDRESS = "service@kkmcn.com";
public final static String TO_ADDRESS = "xx@gmail.com";
public final static String USER = "xx";
public final static String PASSWORD = "xxx";

public static void sendTestEmail()
{
try
{
Properties p = new Properties();
p.put("mail.transport.protocol", "smtp");
p.put("mail.smtp.host", HOST);
p.put("mail.smtp.port", PORT);
p.put("mail.smtp.auth", "true");
p.put("mail.smtp.starttls.enable", "true");
p.put("mail.smtp.starttls.required", "true");
p.put("mail.debug", "true");

MyAuthenticator authenticator = new MyAuthenticator(USER, PASSWORD);
Session sendMailSession = Session.getDefaultInstance(p, authenticator);

Message mailMessage = new MimeMessage(sendMailSession);
Address from = new InternetAddress(FROM_ADDRESS);
mailMessage.setFrom(from);
Address to = new InternetAddress(TO_ADDRESS);
mailMessage.setRecipient(Message.RecipientType.TO, to);
mailMessage.setSubject("Test");
mailMessage.setSentDate(new Date());

Multipart mainPart = new MimeMultipart();
BodyPart html = new MimeBodyPart();
html.setContent("Test", "text/html; charset=utf-8");
mainPart.addBodyPart(html);
mailMessage.setContent(mainPart);

Transport.send(mailMessage);
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}


发送邮件失败时的错误信息:
----------------------------------------
调试:getProvider() 返回 javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
调试 SMTP:useEhlo 为真,useAuth 为真
调试 SMTP:useEhlo 为真,useAuth 为真
调试 SMTP:尝试连接到主机“email-smtp.us-east-1.amazonaws.com”,端口 25,isSSL false
220 电子邮件-smtp.amazonaws.com ESMTP SimpleEmailService-1488591277 A0o81GaPHjNAz0NyRkfI
调试 SMTP:连接到主机“email-smtp.us-east-1.amazonaws.com”,端口:25

EHLO ip-172-31-15-212.ec2.internal
250-电子邮件-smtp.amazonaws.com
250-8比特MIME
250-尺寸 10485760
250-STARTTLS
250-AUTH 普通登录
250 好
DEBUG SMTP:找到扩展名“8BITMIME”,参数“”
DEBUG SMTP:找到扩展名“SIZE”,arg“10485760”
DEBUG SMTP:找到扩展名“STARTTLS”,参数“”
DEBUG SMTP:找到扩展名“AUTH”,arg“PLAIN LOGIN”
DEBUG SMTP:找到扩展名“Ok”,arg“”
DEBUG SMTP:尝试使用以下机制进行身份验证:LOGIN PLAIN DIGEST-MD5 NTLM
DEBUG SMTP:AUTH LOGIN 命令跟踪被抑制
调试 SMTP:授权登录失败

javax.mail.AuthenticationFailedException: 220 准备启动 TLS

在 com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:826)
在 com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:761)
在 com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:685)
在 javax.mail.Service.connect(Service.java:317)
在 javax.mail.Service.connect(Service.java:176)
在 javax.mail.Service.connect(Service.java:125)
在 javax.mail.Transport.send0(Transport.java:194)
在 javax.mail.Transport.send(Transport.java:124)
在 mail.SimpleMailSender.sendHtmlMail(SimpleMailSender.java:97)
在 cla.communication.sendmail(communication.java:2577)
在 cla.communication.getpasswd(communication.java:1821)
在 cla.communication.doPost(communication.java:95)
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620)
在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
在 java.lang.Thread.run(Thread.java:745)

最佳答案

它似乎忽略了您的 starttls 属性。尝试修复 common JavaMail mistakes看看是否有帮助。

您使用的是什么版本的 JavaMail?

关于tomcat - 在 tomcat 中几个小时后发送 java 电子邮件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37596269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com