最近在学习javaMail,可是有一个问题让我很是奇怪,message.setForm()方法里面的InternetAddress总是必须和我连接smtp服务器用的用户名要一样,不然就发送不出去,如果不设置message的setForm在Transport里面设置,或者setForm里面填写其他地址,邮件就都发送不出去,而且没有错误提示!
各位大侠可以指点我一下吗?
- Java code
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("862123204@qq.com")); //发件人(这里好像要和connect()里面的user要相同???) Transport transport = session.getTransport(); //创建发送器 transport.connect("smtp.qq.com", 25, "862123204", "password"); //连接smtp服务器,准备发送 transport.sendMessage(message, new Address[]{new InternetAddress("studyjavaee@163.com"),new InternetAddress("zhanglelife@163.com")}); transport.close(); //关闭资源
------解决方案--------------------
setFrom 是你用哪个邮箱发送的,smtp是你发送的邮箱的邮箱协议。。肯定要一样的阿。。
------解决方案--------------------
我记得是可以不一样,但是似乎是在smtp一样的情况下可以。
比如你是用smtp.163.com 的,你登录的时候是用wwww@163.com
但是你在setFrom时可以换成其他的163的邮箱(如kkk@163.com)
我记得以前试过,你试试看现在能不能行了