
quero enviar e-mails para um endereço com um programa java (usando javamail) via smtp. na verdade, ele envia os e-mails para o destino. o problema é que o corpo do e-mail não é enviado totalmente todas as vezes. considerando que o corpo do meu e-mail é extraído de um banco de dados. aqui está meu código:
public static void smail (conexão, estado de string) { Declaração stmt; tentar { stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet res = stmt.executeQuery("selecione ID, Time_C da produção onde State='"+state+"'"); enquanto(res.next()) { String id=res.getString("1"), tc=res.getString("2"); email de teste smtpMailSend = new email de teste(); String sub="Alerta "+estado; String mes=" ID "+id +"\n Stat: "+state +"\n time: "+tc; smtpMailSend.sMail(sub,mes); } } catch(Exceção e) { e.printStackTrace(); stmt = nulo; } } public void sMail(String obj,String text)lança MessagingException { Propriedades adereços = new Propriedades(); 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"); Autenticador auth = new SMTPAuthenticator(); Sessão sessão = Session.getInstance(props, auth); sessão.setDebug(verdadeiro); Mensagem msg = new MimeMessage(sessão); msg.setText(texto); msg.setSubject(obj); msg.setFrom(new InternetAddress(d_email)); msg.addRecipient(Message.RecipientType.TO, novo InternetAddress(m_to)); Transporte transporte = session.getTransport("smtps"); transport.connect(d_host, d_port, d_uname, d_password); transport.sendMessage(msg, msg.getAllRecipients()); transporte.close(); }
então, após os 2 primeiros registros, recebi no e-mail "ID: 12345" sem a hora ou o estado.
Obrigado pela ajuda
Responder1
Você pode verificar se o corpo da mensagem está intacto sempre que ela sai do servidor de envio do seu lado? Nesse caso, algo do lado do destinatário pode estar eliminando o conteúdo.