请教:Java发邮件在windows下面测试成功,上传到服务器(Linux)上面就没有反应了,看了下log,也没有报什么错
希望有过类此经验的朋友指点一二
谢谢!~

解决方案 »

  1.   

    理论上说不应该有问题,
    会不会是lz的运行环境不一样导致的?
    比如linux上缺某个jar包什么的,
    毕竟发mail的api不是标准库good luck
      

  2.   

    把javamail的debug级别日志打开,就很详细了
    没有明显性的错误的话
    很有可能是dns的问题
    linux下域名解析一般不太保险
    尤其是企业级只跑应用的主机
    不如把发邮件的目标主机从域名改为ip试试
      

  3.   

    我记得我在unix服务器上做上传下载时也遇到这种情况,也是什么错都没报,不知道对楼主有没有用。我那次是因为正斜线与反斜线的问题,因为windows环境下是可以识别反斜线的而unix不可以,所以重新改写一下就好了。楼主的功能内有用到斜线吗?
      

  4.   


    您的意思是 Java发mail的jar包 在 windows  和 Linux上是不同的么?
      

  5.   

    应该是一样的,是用mail.jar这个类开发的吗?
    现在我所做的工程是在windows上开发,在unix上运营的。没有问题~!
      

  6.   

    什么环境?tomcat的?OR jdk的?
      

  7.   

    看一下有没有\和/windows和linux不一样的,是不是这个问题造成的?
      

  8.   

    现在我把发邮件的这个Java类贴出来  希望各位帮我看看 谢谢
    import javax.mail.Address;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;public class SendEmail {
    public boolean SendEmailTest(String ToEmailStr, String Title,
    String Content, String FromEmaila) throws AddressException {
    // ToEmailStr收件人地址
    // Title邮件标题
    // Content邮件内容
    // FromEmail发件人地址
    String FromEmail = "[email protected]";
    boolean fnt = false;
    Properties props = new Properties();
    Session sendMailSession;
    Transport transport;
    sendMailSession = Session.getInstance(props, null);
    String smtp = "smtp.gmail.com";//google邮箱
    props.put("mail.smtp.localhost", "117.102.19.68");
    props.put("mail.smtp.host", smtp); // "202.106.187.180"//是“smtp.sohu.com”的IP!
    props.put("mail.smtp.port", "465");
    props.put("mail.smtp.auth", "true"); // 允许smtp校验
    if(smtp.indexOf("smtp.gmail.com")>=0){
    props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.setProperty("mail.smtp.socketFactory.fallback", "false"); 
    props.setProperty("mail.smtp.port", "465"); 
    props.setProperty("mail.smtp.socketFactory.port", "465");      
            } try {     
    transport = sendMailSession.getTransport("smtp");
    transport.connect("smtp.gmail.com", "*****", "******"); // 你的用户名,密码...........

    Message newMessage = new MimeMessage(sendMailSession); // 设置mail主题
    String mail_subject = Title;
    newMessage.setSubject(mail_subject); // 设置发信人地址
    Address address[] = { new InternetAddress(FromEmail) };// 改变发件人地址
    newMessage.addFrom(address);
    // 设置收件人地址
    newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(ToEmailStr)); // 设置mail正文
    newMessage.setSentDate(new java.util.Date());
    String mail_text = Content;
    newMessage.setText(mail_text); newMessage.saveChanges(); // 保存发送信息
    transport.sendMessage(newMessage, newMessage.getRecipients(Message.RecipientType.TO)); // 发送邮件
    fnt = true;
    transport.close();
    } catch (Exception e) {
    e.printStackTrace();
    fnt = false;
    }
    return fnt;
    }
    }
      

  9.   

    我来告诉你,楼上其实也有人提过。
    你这个问题十有八九是因为Linux的域名服务没有启动
    命令如下:service named start
    最后把这个服务设成开机自启动服务(自己写脚本),这样就不用每次开机手动启动了。
      

  10.   

    在那里执行这个命令啊?是在root下面吗?
    报错了:named: unrecognized service
      

  11.   

    liunx比较折腾。最好别弄那玩艺。真正正规的公司,程序员根本不用去设置liunx。有专人早就设定好以及进行维护。程序员只需要写好自己的程序即可,发布,部署都是服务器管理人员的事情。
      

  12.   

    哈哈 你可是说出了我的心声,可是没办法,根本就没有管理人员
    去部署,老郁闷了,好几个在Windows上面测试正常的程序到Linux上就出毛病...
      

  13.   

    我给你的命令应该没有问题,一般是在root下执行的。不过可能是我们的linux版本不一致,命令会有区别,不过这个应该不会不同,也很有可能是你的linux版本没有预装域名服务(现在新的版本都会预装的,除非你的linux发行版很古董,或者装的不是服务器版本的)。
    我的linux版本是Centos5。你可以在网上百度或谷歌一下linux域名服务的安装和配置启动方法。还有一个折中的解决办法就是把你程序里用到域名的地方都改成ip地址
      

  14.   

    telnet 下看端口通不 
    如果程序没异常 端口也通的话  那就是网管和防火墙的可能了