why??
Transport.send(msg);
异常??
        

解决方案 »

  1.   

    加多一句看看session.setDebug(true);
      

  2.   

    一般的邮件服务器都不提供无验证的邮件发送功能,www.163.com是我唯一知道的可用的SMTP服务器
      

  3.   

    加了,没什么改变。
    我加了一句:
    System.out.println((new InternetAddress(fromAddr)).getType());
    输出的是rfc822
    不知道哪儿出了问题?
      

  4.   

    建议改用smtp.163.com,也许就成了,嘿嘿,我已经吃过一次亏了!
      

  5.   

    改过了,问题依旧。
    谁可以解释一下:No provider for Address type: rfc822的内部机制?
      

  6.   

    msg.setRecipient(Message.RecipientType.TO,new InternetAddress(toAddr,false));
      

  7.   

    上面的编译不通过。
    java.lang.String personal可以为false???
    InternetAddress
    public InternetAddress(java.lang.String address,
                           java.lang.String personal)
                    throws java.io.UnsupportedEncodingException
    Construct an InternetAddress given the address and personal name. The address is assumed to be a syntactically valid RFC822 address.
    Parameters:
    address - the address in RFC822 format
    personal - the personal name
      

  8.   

    我试过JAVAMAIL的DEMO中的msgsendsample.java,编译无错误,运行出现同样的错误:
    --Exception handling in msgsendsample.java
    javax.mail.NoSuchProviderException: No provider for Address type: rfc822
            at javax.mail.Session.getTransport(Session.java:475)
            at javax.mail.Transport.send0(Transport.java:154)
            at javax.mail.Transport.send(Transport.java:80)
            at msgsendsample.main(msgsendsample.java:85)
    请教谁有其他的通过了的例子程序没有?是否跟环境设置有关??
      

  9.   

    setRecipients(Message.RecipientType.TO,InternetAddress.parse(to, false));
      

  10.   

    不行啊,还是有问题。请问skyyoung(路人甲) 你能否通过这个程序?
      

  11.   

    smtp.163.net是否为免费的smtp服务器?
    也许需要验证
      

  12.   

    smtp.163.net需要验证,但是好象smtp.163.com不需要验证,我改成smtp.163.com还是不行。
    我把smtp.jar解压到c:\jdk1.3\lib目录下后,上面的错误变化了,现在出现下面这个错误:
    javax.mail.SendFailedException: Sending failed;
      nested exception is:
            javax.mail.MessagingException: 550 <[email protected]>: Local user only
      

  13.   

    我修改成下列代码:
    import java.util.Properties;
    import javax.mail.*;
    import javax.mail.internet.*;
    class MailExample 
    {
    public static void main(String[] args) throws Exception
    {
        String toAddr="[email protected]";
        String fromAddr="[email protected]";
        String subject="test";
    String body="welcome javamail";
        try{
        Properties props = new Properties();
        props.put("mail.smtp.host","smtp.163.com");
        Session sesion = Session.getInstance(props, null);
        MimeMessage msg = new MimeMessage(sesion);
        msg.setFrom(new InternetAddress(fromAddr));
    msg.setRecipient(Message.RecipientType.TO,new InternetAddress(toAddr)); 
        msg.setSubject(subject);
        msg.setText(body);
    System.out.println("begin");
    sesion.setDebug(true); 
    Transport.send(msg);
    System.out.println("end");
            }
        catch(Exception e)
    {
        System.out.println(e);
    }
    }
    }
    运行时的信息如下,请高手帮忙!
    beginDEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.s
    mtp.SMTPTransport,Sun Microsystems, Inc]
    DEBUG SMTP: useEhlo true, useAuth falseDEBUG: SMTPTransport trying to connect to host "smtp.163.com", port 25DEBUG SMTP RCVD: 220 smtp3.163.com ESMTPDEBUG: SMTPTransport connected to host "smtp.163.com", port: 25DEBUG SMTP SENT: EHLO xiaoyou
    DEBUG SMTP RCVD: 250-smtp3.163.com
    250-PIPELINING
    250-SIZE 10240000
    250-ETRN
    250 8BITMIMEDEBUG SMTP SENT: MAIL FROM:<[email protected]>
    DEBUG SMTP RCVD: 250 OkDEBUG SMTP SENT: RCPT TO:<[email protected]>
    DEBUG SMTP RCVD: 250 OkVerified Addresses
      [email protected]
    DEBUG SMTP SENT: DATA
    DEBUG SMTP RCVD: 354 End data with <CR><LF>.<CR><LF>javax.activation.UnsupportedDataTypeException: no object DCH for MIME type text/
    plain; charset=us-ascii
            at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:85
    1)
            at javax.activation.DataHandler.writeTo(DataHandler.java:305)
            at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1021)
            at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1320)
            at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:307)
            at javax.mail.Transport.send0(Transport.java:163)
            at javax.mail.Transport.send(Transport.java:80)
            at MailExample.main(MailExample.java:23)
    javax.mail.SendFailedException: Sending failed;
      nested exception is:
            javax.mail.MessagingException: IOException while sending message;
      nested exception is:
            javax.activation.UnsupportedDataTypeException: no object DCH for MIME ty
    pe text/plain; charset=us-ascii
      

  14.   

    我把smtp服务器换成我公司的邮件服务器,可是还是不行,输出的错误与上面一样,请问那位高手能够解答此问题?
      

  15.   

    tryMessage msg = new MimeMessage(sesion);你的程序在我这里可以运行
    正常。
        
      

  16.   

    我把SMTP设为:smtp.21cn.com, 编译运行没有问题,可能是环境变量的设置问题:
    是否在Classpath中包含了mail.jar等库
      

  17.   

    非常感谢各位,问题解决了,Classpath中忘记包含了mail.jar,我以为把目录放到Classpath中就可以了,真是太ruo 了,哈哈。马上加分。