在调用Transport.sendMessage() 之前,先保存message, msg.saveChanges();
tspt.sendMessage(msg, msg.getAllRecipients());

解决方案 »

  1.   

    另外,这个Transport类的用法好象还很多,比如可以先创建一个对象,再调用这个对象的send或sendMessage方法,也有直接用Transport.send()的(用类方法,不创建对象),我不太清楚其中的区别,如有高人指教,本人亦非常感谢!
      

  2.   

    谢谢bruni兄!
    刚才没看到你的回复。
    你说的这个saveChanges方法我还是头一次见,我先研究研究,不明之处再向你请教,希望你不吝赐教!
      

  3.   

    Transport.send() 是static 方法,在发送mail之前会自动调用Message.saveChanges().
    而Transport.sendMessage()方法是实例方法,需要自己调用Message.saveChanges()方法.
    可以去看看sun上面的关于javamail的tutorial & FAQ.
      

  4.   

    谢谢 bruni 兄。
    我查了点资料,看到一句:“如果修改了消息的任何部分(报头或内容),则必须调用saveChangee()方法,确保保存了修改“,那么在我上面的代码中,是不是只要在第二次发(对地址to2发,邮件名做了改变)之前调用一下该方法呢?即只需在下面这句
    this.tspt.sendMessage(msg, msg.getAllRecipients()); ////第二次发送完毕
    之前加上:msg.saveChanges();
    而第一次调用tspt.sendMessage()不必加呢?
    谢谢!
      

  5.   

    每次tspt.sendMessage()之前都要调用msg.saveChanges();
      

  6.   

    谢谢 bruni 兄,不知我程序里还有其他问题吗?如果没有我就准备结帖了。
      

  7.   

    有些stmp服务器需要用户验证,如果没有通过验证就不能发送邮件.