MyException - 我的异常网
当前位置:我的异常网» Java Web开发 » 【讨论】java怎么登陆163邮箱,获取登陆用户的好友

【讨论】java怎么登陆163邮箱,获取登陆用户的好友列表(7)

www.MyException.Cn  网友分享于:2015-08-26  浏览:195次

curl_setopt($ch, CURLOPT_URL, 'http://reg.163.com/login.jsp?type=1&url=http://fm163.163.com/coremail/fcg/ntesdoor2?lightweight%3D1%26verifycookie%3D1%26language%3D-1%26style%3D16');
curl_setopt($ch, CURLOPT_POST, 1);
$request = 'verifycookie=1&username='.$_POST['username'].'&password='.$_POST['password'].'&selType=jy&%B5%C7%C2%BC%D3%CA%CF%E4=%B5%C7%C2%BC%D3%CA%CF%E4&style=16&product=mail163';
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
//把返回来的cookie信息保存在$cookie_jar文件中
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
//设定返回的数据是否自动显示
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设定是否显示头信息
curl_setopt($ch, CURLOPT_HEADER, false);
//设定是否输出页面内容
curl_setopt($ch, CURLOPT_NOBODY, false);
$html=curl_exec($ch);
curl_close($ch);


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://fm163.163.com/coremail/fcg/ntesdoor2?lightweight=1&verifycookie=1&language=-1&style=16&username='.$_POST['username']);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar2);
$html=curl_exec($ch);
curl_close($ch);

//echo $name;

$find1 = 'sid=';
$find2 = '">here';
$pos1 = strpos($html, $find1);
$pos2 = strpos($html, $find2);
$l=$pos2-$pos1-4;
//echo substr($html, $pos1+4,$l);
$sess=substr($html, $pos1+4,$l);

$ch2 = curl_init();
//curl_setopt($ch2, CURLOPT_URL, 'http://mail3-13.sinamail.sina.com.cn/cgismarty/addr_member_list.php');
curl_setopt($ch2, CURLOPT_URL, 'http://g1a5.mail.163.com/coremail/fcg/ldvcapp?funcid=address&sid='.$sess.'&tempname=address%2Faddress.htm&ifirstv=&listnum=0&showlist=all');

curl_setopt($ch2, CURLOPT_HEADER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar2);
$html = curl_exec($ch2);
$html=str_replace("\n","",$html); 


curl_close($ch2);
preg_match_all('/<!-- 修改 -->(.*?)<\/td>/',$html,$name1);
preg_match_all('/<!-- 发信 -->(.*?)<\/a>/',$html,$name2);
  
SESSION_START();
header("Content-Type: application/xml; charset=UTF-8");
$dom = new DOMDocument('1.0', 'UTF-8');
$root = $dom->createElement('msns');
foreach($name2[0] as $key=>$value) {
$child = $dom->createElement('msn');
$child->setAttribute('account',strip_tags($name2[0][$key]));
$child->setAttribute('nickname',strip_tags($name1[0][$key]));
$root->appendChild($child);
};
$dom->appendChild($root);
echo $dom->saveXML();

?>

这是php读取163好友列表的代码,看看有没帮助
------解决方案--------------------
Java code
package tcpip.smtp;

import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;

/**
 * 本程序用java来实现Email的发送,所用到的协议为:SMTP,端口号为25;<br>
 * 方法:用Socket进行实现,打开客户端的Socket,并连接上服务器:<br>
 * 如:Socket sockClient = new Socket("smtp.qq.com",23);<br>
 * 这表示发件方连接的是QQ邮箱的服务器,端口号为23
 * 
 */
public class Email {

    /**
     * 整个MIME邮件对象
     */
    private MimeMessage mimeMsg;
    /**
     * 专门用来发送邮件的Session会话
     */
    private Session session;
    /**
     * 封装邮件发送时的一些配置信息的一个属性对象
     */
    private Properties props;
    /**
     * 发件人的用户名
     */
    private String username;
    /**
     * 发件人的密码
     */
    private String password;
    /**
     * 用来实现附件添加的组件
     */
    private Multipart mp;

    /**
     * 发送参数初始化,有的服务器不需要用户验证,所以这里对用户名和密码进行初始化""
     * 
     * @param smtp
     *            SMTP服务器的地址,比如要用QQ邮箱,哪么应为:"smtp.qq.com",163为:"smtp.163.com"
     */
    public Email(String smtp) {
        username = "";
        password = "";
        // 设置邮件服务器
        setSmtpHost(smtp);
        // 创建邮件
        createMimeMessage();
    }

    /**
     * 设置发送邮件的主机(JavaMail需要Properties来创建一个session对象。
     * 它将寻找字符串"mail.smtp.host",属性值就是发送邮件的主机);
     * 
     * @param hostName
     */
    public void setSmtpHost(String hostName) {
        System.out.println("设置系统属性:mail.smtp.host = " + hostName);
        if (props == null)
            props = System.getProperties();
        props.put("mail.smtp.host", hostName);
    }

    /**
     * (这个Session类代表JavaMail 中的一个邮件session. 每一个基于
     * JavaMail的应用程序至少有一个session但是可以有任意多的session。 在这个例子中,
     * Session对象需要知道用来处理邮件的SMTP 服务器。
     */
    public boolean createMimeMessage() {
        try {
            System.out.println("准备获取邮件会话对象!");
            // 用props对象来创建并初始化session对象
            session = Session.getDefaultInstance(props, null);
        } catch (Exception e) {
            System.err.println("获取邮件会话对象时发生错误!" + e);
            return false;
        }
        System.out.println("准备创建MIME邮件对象!");
        try {
            // 用session对象来创建并初始化邮件对象
            mimeMsg = new MimeMessage(session);
            // 生成附件组件的实例
            mp = new MimeMultipart();
        } catch (Exception e) {
            System.err.println("创建MIME邮件对象失败!" + e);
            return false;
        }
        return true;
    }

    /**
     * 设置SMTP的身份认证
     */
    public void setNeedAuth(boolean need) {
        System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);
        if (props == null)
            props = System.getProperties();
        if (need)
            props.put("mail.smtp.auth", "true");
        else
            props.put("mail.smtp.auth", "false");
    }

    /**
     * 进行用户身份验证时,设置用户名和密码
     */
    public void setNamePass(String name, String pass) {
        System.out.println("程序得到用户名与密码");
        username = name;
        password = pass;
    }

    /**
     * 设置邮件主题
     * 
     * @param mailSubject
     * @return
     */
    public boolean setSubject(String mailSubject) {
        System.out.println("设置邮件主题!");
        try {
            mimeMsg.setSubject(mailSubject);
        } catch (Exception e) {
            System.err.println("设置邮件主题发生错误!");
            return false;
        }
        return true;
    }

    /**
     * 设置邮件内容,并设置其为文本格式或HTML文件格式,编码方式为UTF-8
     * 
     * @param mailBody
     * @return
     */
    public boolean setBody(String mailBody) {
        try {
            System.out.println("设置邮件体格式");
            BodyPart bp = new MimeBodyPart();
            bp.setContent(
                    "<meta http-equiv=Content-Type content=text/html; charset=UTF-8>"
                            + mailBody, "text/html;charset=UTF-8");
            // 在组件上添加邮件文本
            mp.addBodyPart(bp);
        } catch (Exception e) {
            System.err.println("设置邮件正文时发生错误!" + e);
            return false;
        }
        return true;
    }

    /**
     * 增加发送附件
     * 
     * @param filename
     *            邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常 
     * @return
     */
    public boolean addFileAffix(String filename) {
        System.out.println("增加邮件附件:" + filename);
        try {
            BodyPart bp = new MimeBodyPart();
            FileDataSource fileds = new FileDataSource(filename);
            bp.setDataHandler(new DataHandler(fileds));

            // 发送的附件前加上一个用户名的前缀
            bp.setFileName(fileds.getName());

            // 添加附件
            mp.addBodyPart(bp);
        } catch (Exception e) {
            System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
            return false;
        }
        return true;
    }

    /**
     * 设置发件人地址
     * 
     * @param from
     *            发件人地址
     * @return
     */
    public boolean setFrom(String from) {
        System.out.println("设置发信人!");
        try {
            mimeMsg.setFrom(new InternetAddress(from));
        } catch (Exception e) {
            return false;
        }
        return true;
    }

    /**
     * 设置收件人地址
     * 
     * @param to
     *            收件人的地址
     * @return
     */
    public boolean setTo(String to) {
        System.out.println("设置收信人");
        if (to == null)
            return false;
        try {
            mimeMsg.setRecipients(javax.mail.Message.RecipientType.TO,
                    InternetAddress.parse(to));
        } catch (Exception e) {
            return false;
        }
        return true;
    }

    /**
     * 发送附件
     * 
     * @param copyto
     * @return
     */
    public boolean setCopyTo(String copyto) {
        System.out.println("发送附件到");
        if (copyto == null)
            return false;
        try {
            mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,
                    InternetAddress.parse(copyto));
        } catch (Exception e) {
            return false;
        }
        return true;
    }

    /**
     * 发送邮件
     * 
     * @return
     */
    public boolean sendout() {
        try {
            mimeMsg.setContent(mp);
            mimeMsg.saveChanges();
            System.out.println("正在发送邮件....");
            Session mailSession = Session.getInstance(props, null);
            Transport transport = mailSession.getTransport("smtp");
            // 真正的连接邮件服务器并进行身份验证
            transport.connect((String) props.get("mail.smtp.host"), username,
                    password);
            // 发送邮件
            transport.sendMessage(mimeMsg, mimeMsg
                    .getRecipients(javax.mail.Message.RecipientType.TO));
            System.out.println("发送邮件成功!");
            transport.close();
        } catch (Exception e) {
            System.err.println("邮件发送失败!" + e.getMessage());
            e.printStackTrace();
            return false;
        }
        return true;
    }

    public static void main(String[] args) {

        Email themail = new Email("smtp.qq.com");
        String mailbody = "Java Mail......";

        themail.setNeedAuth(true);
        themail.setSubject("你好");
        themail.setBody(mailbody);
        themail.setTo(******);
        themail.setFrom(********);
        themail.addFileAffix("C:/CEPxDD0D.tmp");// 附件文件路径,例如:C:/222.jpg,*注;"/"的写法;
        themail.setNamePass(*****, ******);
        themail.sendout();
    }

}

文章评论

2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员必看的十大电影
程序员必看的十大电影
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
一个程序员的时间管理
一个程序员的时间管理
程序员和编码员之间的区别
程序员和编码员之间的区别
我的丈夫是个程序员
我的丈夫是个程序员
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
鲜为人知的编程真相
鲜为人知的编程真相
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
如何成为一名黑客
如何成为一名黑客
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
旅行,写作,编程
旅行,写作,编程
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
Java程序员必看电影
Java程序员必看电影
我是如何打败拖延症的
我是如何打败拖延症的
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
编程语言是女人
编程语言是女人
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
中美印日四国程序员比较
中美印日四国程序员比较
程序员都该阅读的书
程序员都该阅读的书
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
10个调试和排错的小建议
10个调试和排错的小建议
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
为什么程序员都是夜猫子
为什么程序员都是夜猫子
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
 程序员的样子
程序员的样子
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序员的鄙视链
程序员的鄙视链
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
代码女神横空出世
代码女神横空出世
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有