我想通过 smtp 使用 java 程序(使用 javamail)向某个地址发送电子邮件。它实际上将电子邮件发送到目的地。问题是每次电子邮件正文都不会完整发送。考虑到我的邮件正文是从数据库中提取的。这是我的代码:
公共静态无效smail(连接con,字符串状态) { 声明 stmt; 尝试 { stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet res = stmt.executeQuery("从生产中选择ID,Time_C,其中State='"+state+"'"); while(res.next()) { 字符串id=res.getString("1"),tc=res.getString("2"); testmail smtpMailSend = new testmail(); 字符串子="警报" + state; 字符串 mes=" ID "+id +"\n 状态:"+state +"\n 时间:"+tc; smtpMailSend.sMail(sub,mes); } } 捕获(异常 e) { 打印StackTrace(); stmt = 空; } } public void sMail(String obj,String text)抛出 MessagingException { 属性 props = new Properties(); props.put(“mail.smtp.host”,d_host); props.put(“mail.smtp.port”,d_port); props.put(“mail.smtp.starttls.enable”,“true”); props.put(“mail.smtp.debug”,“true”); props.put(“mail.smtp.auth”,“true”); 验证器 auth = 新 SMTPAuthenticator(); 会话session = Session.getInstance(props,auth); 会话.setDebug(真); 消息msg = new MimeMessage(session); msg.设置文本(文本); msg.设置主题(obj); msg.setFrom(新的Internet地址(d_email)); msg.添加收件人(消息.收件人类型.TO,新的Internet地址(m_to)); 运输transport = session.getTransport(“smtps”); 传输.连接(d_host,d_port,d_uname,d_password); 传输.发送消息(msg,msg.getAllRecipients()); 运输.关闭(); }
因此,在前 2 条记录之后,我在邮件“ID:12345”中没有时间或状态。
感谢您的帮助
答案1
您能否验证邮件正文每次离开您这边的发送服务器时都是完整的?如果可以,则收件人那边的某些东西可能删除了内容。