你发邮件用的是sina的smtp服务器,这个服务器需要认证才能给你发邮件,
要解决这样的问题,最好是找一个不需要认证的服务器,例如自己公司的邮件服务器也可以,

解决方案 »

  1.   

    你的这种方式并不可靠,因为很多电子邮局的smtp服务器要求我们通过验证,所以用这种方式发邮件时,只能发给同类邮箱(即相同smtp的邮箱),甚至有时同类邮箱也发不出去,可以试改一下下面的写法,会很好用:
    //设置邮件
    InternetAddress from=new InternetAddress("[email protected]");
    message.setFrom(from);
    //设置发件人
    InternetAddress to=new InternetAddress(tto);
    message.setRecipient(Message.RecipientType.TO,to);
    //设置收件人,并设置其接收类型为TO
    message.setSubject(ttitle);
    //设置主题
    message.setText(tcontent);
    //设置信件内容
    message.setSentDate(new Date());
    //设置发信时间
    //发送邮件
    message.saveChanges();
    //存储邮件信息
    Transport transport=s.getTransport("smtp");transport.connect("smtp.163.net","boy","iloveyou");
    //以smtp方式登录邮箱
    transport.sendMessage(message,message.getAllRecipients());
    //发送邮件,其中第二个参数是所有已设好的收件人地址
    transport.close();
      

  2.   

    还是认证的问题,如 littlef 所说,你用不需要认证的公司邮箱,提供了账号和密码即可给外部邮箱发信,但是反过来不行至于怎么过那个认证,我也很想知道,搞定了希望能分享一下。
      

  3.   

    To Raulgodle(Raul):
       照你说的那样改过了,还是同样的错误。
       其实我原来的代码中也有处理认证的部分<%! %>中的声明部分就是。
       因为是帖在这当然不可能公布真正的用户名和密码,那样我的邮箱不要被盗!JavaMail API还是没什么实用。发个邮件都发不出去,我的毕业设计怎么完成啊?我必须实现发HTML表格形式的邮件到各种邮件地址。至少是知名的hotmail,sina,yahoo,等。各位大哥,帮帮小妹吧!!!!
      

  4.   

    还有一篇关于页面延时转换问题也请大家看看
    搜索java      jsp/servlet/
    关键字:%
    作者: nancygreen谢谢大家!!!!
      

  5.   

    有些邮件服务器需要验证的,可以象下面一样设置
    props.put("mail.smtp.host","smtp.sina.com"); 
    props.put("mail.smtp.auth","true");
    props.put("mail.smtp.user","[email protected]");
    props.put("mail.smtp.password","test");
      

  6.   

    mail.jar&activation.jar
    all in your classpath?
      

  7.   

    是啊,mail.jar&activation.jar的设置都没问题
      

  8.   

    俺的javaMail也没试成功,郁闷。
      

  9.   

    首先,你要知道的是sina的服务器是不能随便用的,好象是因为防止恶意发垃圾邮件。所以,你上面的程序无论如何也无法成功的,因为你无法通过验证。
    但是你的程序应该来说是没问题的!建议你申请一个别的邮箱,比如,etang的。我就是用这个做的实验,已经成功了,至于怎么用sina的服务器来收发邮件,我在仔细研究后,给你答复。
    下面是程序
    <%@ page contentType="text/html; charset=GBK" %>
    <%@ page language="java" import="java.io.*,java.util.*,javax.mail.*,javax.mail.internet.*,javax.activation.*"%>
    <%try{
        String host="smtp.free.etang.com";
        String from="[email protected]";
        String to="[email protected]";    String username="username";//下面的用户名和密码一定要对
        String password="password";    Properties props = new Properties();    Session sendMailSession;
        Transport transport;
        props.put("mail.smtp.host", host); 
        props.put("mail.smtp.auth", "true");//这一句也不能掉
        sendMailSession = Session.getInstance(props, null);
        
        MimeMessage newMessage = new MimeMessage(sendMailSession);
        newMessage.setFrom(new InternetAddress(from));
        newMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(to));
        String subject="这是一个实验!";
        byte[] tmp1byte=subject.getBytes("ISO-8859-1");
        subject=new String(tmp1byte);
        newMessage.setSubject(subject);
        
    String content="helleo.";
    newMessage.setText(content);
    newMessage.setSentDate(new Date());
    transport = sendMailSession.getTransport("smtp");
        transport.connect(host,username,password);
        transport.sendMessage(newMessage,newMessage.getRecipients(Message.RecipientType.TO)); }catch(MessagingException e){
        out.println(e.toString());
    }%>
      

  10.   

    你所的问题我已经都 搞定了,并且在sina的服务器上发邮件也成功过了,我用下面的程序一共在三个邮件服务器上试过smtp.sina.com.cn和smtp.163.com和smtp.free.etang.com上都进行过测试,在这其中,你应该注意的是stmp.sina.com.cn这个邮件服务器,通常在申请sina邮箱的时候,你得到的是三样东东,拿我的来说,有邮箱[email protected],密码******,用户名fuzyandy,它和一般的邮箱不同,一般的邮箱如[email protected],它的用户名就是fuzuyuan,所以对于我上面的sina邮箱到底要用哪一个用户名呢,是fuzyandy还是fuzuyuan呢?最好的办法,就是在outlook上配置一下,经测试,应该是fuzuyuan,用fuzyandy无论如何是连不上的,但进www.sina.com.cn去登录自己的邮箱却要用fuzyandy,很变吧,我也不知道是为什么,希望有人能告诉我!
    下面是运行的程序,在执行时,多等一下,只到dos的屏幕上出现press and key....那句话时
    在查看自己的邮箱中是否有邮件。
    package mypackage;import javax.mail.*;
    import javax.mail.internet.*;
    import java.util.*;
    public class SendEmail
    {
        public static void main(String args[]) throws Exception
        {        String host = "smtp.sina.com.cn";
            String from =  "[email protected]";
            String to = "[email protected]";
            String username = "××××";//注意sina邮箱的填写,一定要按我上面说的来写
            String password = "××××";
    try{
            // Get system properties
            // Properties props = System.getProperties(); 很多例子中是这样的,其实下面这句更好,可以用在applet中
            Properties props = new Properties();

            // Setup mail server
            props.put("mail.smtp.host", host);
            props.put("mail.smtp.auth", "true"); //这样才能通过验证

            // Get session
            Session session = Session.getDefaultInstance(props);

            // watch the mail commands go by to the mail server
            //session.setDebug(true);

            // Define message
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
            message.setSubject("这是一个测试");
            message.setText("****************************************************");
    message.setSentDate(new java.util.Date());
            // Send message
            message.saveChanges();
            Transport transport = session.getTransport("smtp");
            transport.connect(host, username, password);
            //transport.sendMessage(message, message.getAllRecipients());这两句都可以
            transport.sendMessage(message,message.getRecipients(Message.RecipientType.TO));
            transport.close();
         }
         catch(Exception e){
          e.printStackTrace();
         }
        }
    }