typw520 2011-01-06 10:04
浏览 229
已采纳

邮件检查问题

下面是我的代码,问题出的不知道什么原因,不知道是不是系统区别问题,在windows下面运行是可以正常检查出来,但是在Linux下面就不行了,求解答
[code="java"]package string.code;

import java.io.IOException;

import org.apache.commons.net.smtp.SMTPClient;
import org.apache.commons.net.smtp.SMTPReply;
import org.xbill.DNS.Lookup;
import org.xbill.DNS.Record;
import org.xbill.DNS.Type;

public class CheckEmailObj {

public static boolean checkEmail(String email) {
    DealString ds = new DealString();

    // if (!email.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+")) {
    if (ds.emailFormat(email) == false) {
        // System.err.println("Format error");
        return false;
    }
    getProperties getset = new getProperties();
    String efrom = getset
            .readValue("gecxml/config.properties", "mail.from");
    String[] efromarray = efrom.split("@");
    String log = "";
    String host = "";
    String hostName = email.split("@")[1];
    Record[] result = null;
    SMTPClient client = new SMTPClient();

    try {
        System.out.println(hostName + "       hostName");

        System.out.println(Type.MX + "        Type.MX");
        // 查找MX记录
        Lookup lookup = new Lookup(hostName, Type.MX);

        System.out.println(lookup + "      lookup");

        lookup.run();

        System.out.println(lookup.getAnswers() + "     lookup.getAnswers()");

        System.out.println(lookup.getResult() + "      lookup.getResult()");

        System.out.println(Lookup.SUCCESSFUL + "       Lookup.SUCCESSFUL");

        if (lookup.getResult() != Lookup.SUCCESSFUL) {
            log += "找不到MX记录\n";
            return false;
        } else {
            result = lookup.getAnswers();
        }

        // 连接到邮箱服务器
        for (int i = 0; i < result.length; i++) {
            host = result[i].getAdditionalName().toString();

            client.connect(host);
            if (!SMTPReply.isPositiveCompletion(client.getReplyCode())) {
                client.disconnect();
                continue;
            } else {
                log += "MX record about " + hostName + " exists.\n";
                log += "Connection succeeded to " + host + "\n";
                break;
            }
        }
        log += client.getReplyString();

        // HELO cyou-inc.com

        client.login(efromarray[0].toString());

        log += ">HELO localhost\n";
        log += "=" + client.getReplyString();

        // MAIL FROM: <zhaojinglun@cyou-inc.com>

        client.setSender("info@localhost.org");
        log += ">MAIL FROM: <info@localhost.org>\n";
        log += "=" + client.getReplyString();

        // RCPT TO: <$email>
        client.addRecipient(email);
        log += ">RCPT TO: <" + email + ">\n";
        log += "=" + client.getReplyString();

        if (250 == client.getReplyCode()) {
            return true;
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            client.disconnect();
        } catch (IOException e) {
        }
        // 打印日志
        System.err.println(log);
    }
    return false;
}[/code]
  • 写回答

2条回答 默认 最新

  • jiangguangxian 2011-01-06 14:15
    关注

    既然不是程序问题,那有可能就是linux下的host映射,访问权限等等问题,这个你不要通过程序来找问题,通过你的机器来找问题,首先能上网是不行的,试试能不能ping通stmp.163.com再说。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题