
Java プログラム (Javamail を使用) を使用して、SMTP 経由でアドレスにメールを送信したいと考えています。実際には、メールは宛先に送信されます。問題は、メールの本文が毎回完全に送信されないことです。メールの本文はデータベースから抽出されるので、これが私のコードです。
パブリック静的 void smail(接続 con、文字列状態) { ステートメント stmt; 試す { stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE、ResultSet.CONCUR_UPDATABLE); ResultSet res = stmt.executeQuery("state='"+state+"' の場合、production から ID、Time_C を選択"); (res.next() の間) { 文字列 id=res.getString("1"), tc=res.getString("2"); テストメール smtpMailSend = 新しいテストメール(); 文字列 sub="Alert "+state; 文字列 mes=" ID "+id +"\n 統計: "+state +"\n 時間: "+tc; smtpMailSend.sMail(sub,mes); } } 例外 e をキャッチします { e.printStackTrace(); ステートメント = null; } } パブリック 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 = new SMTPAuthenticator(); セッション session = Session.getInstance(props, auth); セッションをデバッグモードに設定します。 メッセージ msg = new MimeMessage(session); msg.setText(テキスト); msg.setSubject(obj); msg.setFrom(新しいインターネットアドレス(d_email)); msg.addRecipient(Message.RecipientType.TO、新しいインターネットアドレス(m_to)); トランスポート transport = session.getTransport("smtps"); トランスポート接続(d_host、d_port、d_uname、d_password) トランスポート。メッセージを送信します。 トランスポートを閉じます。 }
最初の 2 つのレコードの後、時間や状態のない「ID: 12345」がメールに届きました。
ご協力いただきありがとうございます
答え1
送信側サーバーからメッセージが送信されるたびに、メッセージの本文がそのままであることを検証できますか? 検証できる場合、受信側で何らかの原因によりコンテンツが削除されている可能性があります。