通过Javamail在MySql表中存储数据失败

通过Javamail在MySql表中存储数据失败,java,mysql,jakarta-mail,james,Java,Mysql,Jakarta Mail,James,如何将通过javamail编写的消息存储到MySQL表中? 我已经将james服务器配置文件配置为连接到MySQL服务器(数据源元素名为maildb),并且我将james服务器配置文件中的元素更改为 <inboxRepository> <repository destinationURL="db://maildb/spammer/" type="MAIL"/> </inboxRepository> 但我仍然无法读取MySql邮件数

如何将通过javamail编写的消息存储到MySQL表中? 我已经将james服务器配置文件配置为连接到MySQL服务器(数据源元素名为maildb),并且我将james服务器配置文件中的
元素更改为

<inboxRepository>
  <repository destinationURL="db://maildb/spammer/"
    type="MAIL"/>      
</inboxRepository>

但我仍然无法读取MySql邮件数据库中表垃圾邮件发送者表的收件箱列中的消息

下面是我的javamail类:

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class mail{

  public static void main(String[] argts){
    String to = "red@localhost";
    String from = "blue@localhost";
    String subject = "jdk";
    String body = "Down to wind";

    if ((from != null) && (to != null) 
      && (subject != null)  && (body != null)) 
    // we have mail to send
    {
      try {
        Properties props = new Properties();

        props.put("mail.host", "127.0.0.1 ");
        props.put("mail.smtp.auth","true");

        Session session = 
          Session.getInstance(props, new javax.mail.Authenticator() {

          protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("blue", "blue");
          }
        });
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        Address[] add={ new InternetAddress(to) };
        message.setRecipients(Message.RecipientType.TO,add);
        message.setSubject(subject);
        message.setContent(body, "text/plain");
        message.setText(body);
        Transport.send(message);

        System.out.println
          ("<b>Thank you. Your message to "+to+" was successfully sent.</b>");

      } catch (Throwable t) {
        t.printStackTrace();
      }
    }
  }
}
import java.io.IOException;
导入java.io.PrintWriter;
导入java.util.Properties;
导入javax.mail.*;
导入javax.mail.internet.*;
公营邮件{
公共静态void main(字符串[]参数){
字符串to=”red@localhost";
字符串from=”blue@localhost";
字符串subject=“jdk”;
String body=“下风”;
if((from!=null)&&(to!=null)
&&(subject!=null)和(body!=null))
//我们有邮件要寄
{
试一试{
Properties props=新属性();
道具放置(“mail.host”,“127.0.0.1”);
props.put(“mail.smtp.auth”,“true”);
会话=
getInstance(props,newjavax.mail.Authenticator(){
受保护的密码身份验证getPasswordAuthentication(){
返回新密码验证(“蓝色”、“蓝色”);
}
});
Message Message=新的mimessage(会话);
message.setFrom(新的InternetAddress(from));
地址[]add={new InternetAddress(to)};
message.setRecipients(message.RecipientType.TO,add);
message.setSubject(主题);
message.setContent(正文,“文本/普通”);
message.setText(正文);
传输。发送(消息);
System.out.println
(“谢谢。您发送至“+至+”的消息已成功发送。”);
}捕获(可丢弃的t){
t、 printStackTrace();
}
}
}
}

我在这里做错了什么,我如何读取MySQL中垃圾邮件发送者表中的消息?

可能您使用了错误的数据库URL: destinationURL=“db://maildb/spammer/” 我建议更改为 destinationURL=”mysql://maildb/spammer/"
如果目标当然是mysql数据库。

当您执行应用程序时,发送的应用程序是否会持久保存在数据库中?我从您的帖子中得知,您希望在垃圾邮件发送者表中保留已发送邮件的副本,但我看不到您运行的示例中的任何持久性代码-这是否意味着james会自动执行持久性操作?