1
나는 smtp를 통해 자바 프로그램 (javamail 사용)으로 주소로 이메일을 보내고 싶다. 실제로 목적지에 이메일을 보냅니다. 문제는 전자 메일의 본문이 매번 완전히 전송되지 않는다는 것입니다. 내 메일의 본문이 데이터베이스에서 추출되었다고 생각하면됩니다. 여기 내 코드입니다 :javamail 및 smtp를 사용하여 데이터베이스에서 데이터를 추출하여 메일을 보내는 방법은 무엇입니까?
그래서 2 첫 번째 레코드 후, 내가 메일 "ID : 12345"로했습니다public static void Bmail(Connection conn, String grav, String state)
{
Statement stmt;
try
{
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet res = stmt.executeQuery("select ID, Time_C from production where name='"+grav +"' and State='"+state+"'");
while(res.next())
{
String id=res.getString("1"), tc=res.getString("2");
testmail smtpMailSend = new testmail();
String sub="Alert "+grav+" "+state;
String mes=" ID "+id +"\n Stat: "+state +"\n time: "+tc;
smtpMailSend.sMail(sub,mes);
}
} catch(Exception e)
{
e.printStackTrace();
stmt = null;
}
}
public void sMail(String obj,String text)throws MessagingException
{
Properties 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");
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
session.setDebug(true);
Message msg = new MimeMessage(session);
msg.setText(text);
msg.setContent(text,"text/plain");
msg.setSubject(obj);
msg.setFrom(new InternetAddress(d_email));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to));
msg.saveChanges();
Transport transport = session.getTransport("smtps");
transport.connect(d_host, d_port, d_uname, d_password);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
}
시간이나 상태없이.
글쎄 나는 setContent를 시도했지만 여전히 같은 문제가 있습니다. 어쩌면 콘텐츠 유형이 원인입니다 (나는 text/plain을 넣을 것입니다)? 당신의 도움이
메시지 본문이 어떻게 생겼는지 예를 들려 줄 수 있습니까? 잘 렸어? 실종 됐나요? – Stroboskop
오 죄송합니다. 그랬지. – Stroboskop
첫 번째 추측 : 줄 바꿈없이 시도하십시오. 그런 다음 줄 바꿈을 시도해보십시오. 그러나 콜론 (':')이 없으면 줄 바꿈없이 작동합니다. – Stroboskop