最近在学习javaMail,可是有一个问题让我很是奇怪,message.setForm()方法里面的InternetAddress总是必须和我连接smtp服务器用的用户名要一样,不然就发送不出去,如果不设置message的setForm在Transport里面设置,或者setForm里面填写其他地址,邮件就都发送不出去,而且没有错误提示!
各位大侠可以指点我一下吗?public static void main(String[] args) throws Exception {
Properties props = new Properties();
props.setProperty("mail.debug", "true"); //输出debug信息
props.setProperty("mail.transport.protocol","smtp"); //协议
props.setProperty("mail.auth", "true"); //用户验证
Session session =Session.getInstance(props); // 创建Session

String date = DateFormat.getTimeInstance().format(new Date(System.currentTimeMillis())); //区分标示作用

Message message = new MimeMessage(session); // 创建邮件体
message.setText("路遥知马力!"); //邮件内容:简单的
message.setSubject("javaMial" + date ); //邮件主题
message.setFrom(new InternetAddress("[email protected]")); //发件人(这里好像要和connect()里面的user要相同???)

Transport transport = session.getTransport(); //创建发送器
transport.connect("smtp.qq.com", 25, "862123204", "password");  //连接smtp服务器,准备发送
transport.sendMessage(message, new Address[]{new InternetAddress("[email protected]"),new InternetAddress("[email protected]")});

transport.close(); //关闭资源

解决方案 »

  1.   

    setFrom 是你用哪个邮箱发送的,smtp是你发送的邮箱的邮箱协议。。肯定要一样的阿。。
      

  2.   

    我记得是可以不一样,但是似乎是在smtp一样的情况下可以。
    比如你是用smtp.163.com 的,你登录的时候是用[email protected]
    但是你在setFrom时可以换成其他的163的邮箱(如[email protected]
    我记得以前试过,你试试看现在能不能行了