收信后,发现mail的内容不正确,然后给送信者返信,此时出现异常(单独收信和发信没有问题),
以下是异常信息:
javax.mail.SendFailedException: Sending failed;
  nested exception is: 
javax.mail.SendFailedException: Invalid Addresses;
  nested exception is: 
javax.mail.SendFailedException: 550 5.7.1 Unable to relay for [email protected]
我是新人,希望各位大侠多多帮忙,我调试了一天了还是找不出问题所在,急啊,先谢谢了。

解决方案 »

  1.   

    当你回复邮件时,请确保该reply message的from地址对于你当前的服务器是合法的。请检查之,明确设置之。
      

  2.   

    看信息是提示发送地址错误喔!
    收信后,发现mail的内容不正确 ? 何谓不正确?
      

  3.   

    谢谢大家:
    我可能说得不太清楚。
    发现mail的内容不正确就是:
    mail内容里:金额:123元
    如果金额为空就是mail的内容不正确。
    我说清楚了吗?
      

  4.   

    我收邮件的服务器用的是pop3,发邮件用的是SMTP,
    设置的没有问题,单独的收信和发信都没有问题。
    我怀疑是邮件服务器的原因,
    收完信要把POP3服务器给断开,然后再连smtp送信,
    可是不知道怎么断开阿?
    不知道我的想法是不是正确,
    请各位大哥大姐指教,谢谢
      

  5.   

    哈哈,还是不好用阿。我开始是这样写的:
               Transport.send(msg);
    程序走到这一行的时候就异常了。
    现在改成这样了:
                 Transport transport = null;
                transport.send(msg);
                transport.close();
    还是出跟上面一样的异常,程序根本走不到transport.close();这一行就异常了,太郁闷了
      

  6.   

    下面是发信的代码:
    public String sendMail(String strErrNaiyo, String strSubject) {        
            String fromMailAdd = "";
            String emailHostIP = MailPproperties.emailHostIP;
            String emailPort = MailPproperties.emailPort;
            Properties props = new Properties();
            props.put("mail.smtp.host", emailHostIP);
            props.put("mail.smtp.port", emailPort);
            Session session = Session.getDefaultInstance(props, null);
                MimeMessage msg = new MimeMessage(session);
                msg.setFrom(new InternetAddress(fromMailAdd));
                msg.setRecipients(javax.mail.Message.RecipientType.TO, "[email protected]");
                msg.setSubject(strSubject, "iso-2022-jp");
                MimeBodyPart mbp = new MimeBodyPart();
                MimeMultipart mmPary = new MimeMultipart();
                if (strErrNaiyo != null) {
                    mbp.setText(strErrNaiyo, "iso-2022-jp");
                    mmPary.addBodyPart(mbp);
                } else {
                    strErrNaiyo = "";
                    mbp.setText(strErrNaiyo, "iso-2022-jp");
                    mmPary.addBodyPart(mbp);
                } 
                msg.setContent(mmPary);
                msg.setSentDate(new Date());
              msg.saveChanges();
                Transport.send(msg);
            } catch (MessagingException mex) {
                mex.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return "";
        }
    下面是收信时的设置:
             String strHost = MailPproperties.popHostIP;
            String strName = MailPproperties.reserveMailAddr;
            String strPassword = MailPproperties.reservePassWord;
            Properties prop = new Properties();
            prop.put("mail.pop3.host", strHost);
            Session session = Session.getDefaultInstance(prop, null);单独的收送信没有问题,可是一连起来就异常了。谢谢“jinxfei”大哥给我解答问题
      

  7.   

    哈哈,问题解决了,原来是Session的问题,改成下面这样就好了:
    Session.getInstance(prop, null);
      

  8.   

    问个问题,msg.setFrom(new   InternetAddress(fromMailAdd)); 
    我看你fromMainAdd变量是空串,
    你的服务器不拒绝这种类型的邮件吗?现在很多服务器在发送信息时必须是先要验证帐号合法性的。
      

  9.   

    上面的源程序关于fromMailAdd的付值的那一块
    因为涉及到数据库的数据所以没有拷出来,
    不好意思。
    如果fromMainAdd变量是空串的话,catch因该能捕获住。