当前位置: 首页 > 知识库问答 >
问题:

在tomcat中发送Java电子邮件数小时后失败

易博文
2023-03-14

我使用亚马逊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:如果是真的,useAuth TRUE
调试SMTP:如果是真的,useAuth TRUE
调试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-email-smtp.amazonaws.com
250-8bitmime
250-size 10485760
250-starttls
250-auth普通登录
250确定
调试SMTP:找到扩展“8bitmime”,参数“”
调试SMTP:找到扩展“size”,参数“10485760”
调试SMTP:找到扩展“starttls”,参数“”
调试SMTP:找到扩展“AUTH”,参数“普通登录”
调试SMTP:找到扩展“ok”,参数“
调试SMTP:找到扩展”ok“,参数”“
调试SMTP:使用机制进行身份验证:登录普通摘要-MD5 NTLM
调试SMTP:AUTH登录命令跟踪被抑制
调试SMTP:AUTH登录失败

javax.mail.authenticationfailedexception:220准备24)
在mail.simplemailsender.sendhtmlmail(simplemailsender.java:97)
在cla.communication.sendmail(communication.java:2577)
在cla.communication.getpasswd(communication.java:1821)
在cla.communication.doPost(communication.java:95)
在java.servet.http.service(httpservlet.java:643)
在java.servet.service(ardEngineValve.Java:109)
在org.apache.catalina.connector.coyoteAdapter.service(coyoteAdapter.Java:293)
在org.apache.coyote.http11.http11Processor.Process(http11Processor.:861)
在org.apache.coyote.http11.http11Protocol$http11ConnectionHandler.Process(http11Protocol.:620)

共有1个答案

元昊苍
2023-03-14

看起来它忽略了您的starttls属性。尝试修复常见的JavaMail错误,看看是否有帮助。

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

 类似资料:
  • 我是java初学者,我想用java发送一封电子邮件,因为我正在用java编写这段代码。但是我的代码抛出了一个异常,我需要一个提示为什么… 这是异常的堆栈跟踪: 这是我的代码

  • 我是Java初学者,我想用Java发送电子邮件。为此,我使用这段代码发送电子邮件,但这段代码引发了一个异常。我已经验证了我的用户名和密码,它们绝对没有问题,所以请告诉我是否有其他方法用Java发送电子邮件? 这是异常的堆栈跟踪: 这是我的代码

  • 我正在用我的电子邮件Id发送我的邮件数据。我制作了一个包含editText(用于emailId)和按钮的mainActivity类。另一个类是BroadcastReceiver类,我在其中检索数据。现在我不明白如何将这些数据发送到后台提供的电子邮件中。我在谷歌上搜索了很多,但都没有得到所需的回复。请分享这些想法并帮助我。

  • 问题内容: 我最近开始编程我的第一个node.js。但是,我发现我无法创建直接发送到我的电子邮件的“联系我”表单,因为我无法从能够发送电子邮件的节点中找到任何模块。 有人知道node.js电子邮件库或示例联系表单脚本吗? 问题答案: node-email-templates是一个更好的选择:https : //github.com/niftylettuce/node-email- template

  • 问题内容: 我正在尝试使用Java发送电子邮件: 我收到错误消息: 此代码可以发送电子邮件吗? 问题答案: 户名+密码不再是推荐的解决方案。这是因为 我尝试了此操作,Gmail向该代码中用作用户名的电子邮件发送了一封电子邮件,其中说我们最近阻止了你的Google帐户的登录尝试,并将我定向到此支持页面:support.google.com/accounts/answer/6010255因此它看起来很

  • 我的Opencart版本3.0.2.0 我的问题是,电子邮件最近不起作用。我正在使用gmail smtp,几天前它还可以正常工作。但突然,它停止了工作,在检查错误日志时,我在日志下面找到了它。 PHP致命错误:未捕获的异常“异常”,带有消息“错误:服务器未接受密码!”在 /home/MYFOLDERNAME/public_html/system/library/mail/smtp.php:206