http://blog.csdn.net/ycg01/article/details/1394465

2006-11-18 16:41 1259人阅读 评论(0) 收藏 举报

版权声明:本文为博主原创文章,未经博主允许不得转载。

一.邮件收发.

以gmail为例.(不知道为啥,用同一个帐户给自己收发,或者用两个帐户同时相互收发,会造成邮件收发混乱.估计与连接,和服务器端处理 有关.)正常的收发可以成功.

package cn.edu.nju.vicken;

import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.FetchProfile;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

class PopupAuthenticator extends Authenticator{
    
    String username=null;
    String password=null;
    public PopupAuthenticator(String user,String pass)
    {
        username = user;
        password = pass;
    
    }
    public PasswordAuthentication performCheck(String user,String pass)
    {
        username = user;
        password = pass;
        return getPasswordAuthentication();
    }
    protected PasswordAuthentication getPasswordAuthentication()
    {
        return new PasswordAuthentication(username, password);
    }
}
public class EmailProcessor {
    protected String smtp_host = "smtp.gmail.com";
    protected String pop3_host = "pop.gmail.com";
    protected String pop3_port = "995";
    protected String smtp_port = "465";
    protected String user = "";
    protected String password = "";
    
    private Session mailsessionpop3 = null;
    private Session mailsessionsmtp = null;
    public EmailProcessor(String user,String password){
        this.user = user;
        this.password = password;
    }
    
    private void createSessionPop3(){
        if(mailsessionpop3==null){
            Properties   props   =   System.getProperties();  
            props.put("mail.pop3.host", pop3_host);
            props.put("mail.pop3.port", pop3_port);
            props.put("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.put("mail.pop3.socketFactory.fallback", "false");
            props.put("mail.pop3.socketFactory.port", pop3_port);
            
            PopupAuthenticator popAuthenticator = new PopupAuthenticator(user,password);
            mailsessionpop3 = Session.getDefaultInstance(props,popAuthenticator); 
        }
    }
    
    private void createSessionSmtp(){
        if(mailsessionsmtp==null){
            Properties   props   =   System.getProperties();  
            props.put("mail.smtp.host", smtp_host);
            props.put("mail.smtp.port", smtp_port);
            props.put("mail.smtp.auth","true");
            props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.socketFactory.fallback", "false");
            props.put("mail.smtp.socketFactory.port", smtp_port);
            
            PopupAuthenticator popAuthenticator = new PopupAuthenticator(user,password);
            mailsessionsmtp = Session.getDefaultInstance(props,popAuthenticator); 
        }
    }
    
    public ArrayList getAllEmail() throws Exception{
        createSessionPop3();
        
        ArrayList ret = new ArrayList();

        Store store = mailsessionpop3.getStore("pop3");
        store.connect();
        Folder folder = store.getFolder("INBOX");
        folder.open(Folder.READ_ONLY);
        Message[] messages = folder.getMessages();
        for (int i = 0; i < messages.length; i++) {
            ret.add(messages[i].getSubject());
        }
        return ret;
    }
    
    public void sendEmail(String recv,String title,String text,File file) throws Exception{
        createSessionSmtp();
        
        MimeMessage mimeMsg =new MimeMessage(mailsessionsmtp);
        mimeMsg.setFrom(new InternetAddress(user+"@gmail.com"));
        mimeMsg.setRecipients(RecipientType.TO,InternetAddress.parse(recv+"@gmail.com"));
        mimeMsg.setSubject(title);
        mimeMsg.setSentDate(new Date());
        mimeMsg.setText(text);
        
        BodyPart bp = new MimeBodyPart();
        FileDataSource fileds = new FileDataSource(file);
        bp.setDataHandler(new DataHandler(fileds));
        bp.setFileName(fileds.getName());
        Multipart mp = new MimeMultipart();;
        mp.addBodyPart(bp);
        mimeMsg.setContent(mp);
        Transport.send(mimeMsg);
    }
}

java邮件收发的更多相关文章

  1. java 邮件收发 (只能输入英文,中文需要转码)

    //发件 package com.sun.mail;import java.io.UnsupportedEncodingException;import java.util.Properties;im ...

  2. JAVA邮件收发实现(待)

    http://blog.csdn.net/ycg01/article/details/1394465

  3. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  4. Java入门 - 高级教程 - 06.邮件收发

    原文地址:http://www.work100.net/training/java-email.html 更多教程:光束云 - 免费课程 邮件收发 序号 文内章节 视频 1 概述 2 发送一封简单的邮 ...

  5. Java实现邮件收发

    一. 准备工作 1. 传输协议 SMTP协议-->发送邮件: 我们通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器) POP3协议-->接收邮件: 我 ...

  6. Android 基于Android的手机邮件收发(JavaMail)之二( Welcome.java 和 ReceiveAndSend.java )

    周末休息,这次我们继上次内容继续.上一篇内容我们讲述的是一些准备工作.下载两个javamail.jar和activation.jar文件,然后再BuildPath~ 言归正传,为了展示效果,在这里我申 ...

  7. java web邮件收发

    1.网上方法要导入两个包 mail.jar&activation.jar package com.zjh.shopping.util; import java.util.Date; impor ...

  8. Java邮件发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...

  9. [Java面试三]JavaWeb基础知识总结.

    1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供外界访问的Web资源分为: • 静 ...

随机推荐

  1. Oracle SQL 内置函数大全

    SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ...

  2. 4. JavaScript 控制语句

    1. If...Else 语句 1.1 条件语句if /* 格式: 1. if ... 2. if ... else ... 3. if ... else if .... else 4. switch ...

  3. bootstraptable表格基本

    function tableint(){   $("#tableFromData").bootstrapTable({    url:BASE_URL+"/do/fron ...

  4. ZOJ 649 Rescue(优先队列+bfs)

    Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  5. 转:JMeter进行Java 请求测试

    本文转自:http://blog.csdn.net/xiazdong/article/details/7873767 向原作者致敬,看了他的文章才让我顺利解决了JMeter测试中的问题,万分感谢! 目 ...

  6. .net core 系列

    1..net core 验证码 2..net core 导出excel 3..net core 上传文件 4..net core 时间戳转换 5..net core 读取配置文件 6..net cor ...

  7. LeetCode OJ 82. Remove Duplicates from Sorted List II

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

  8. The 3n + 1 problem

    The 3n + 1 problem Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) ...

  9. why TCP guarentee delivery?

    Simple idea: just use a TIMEOUT, if no answer after a certain seconds, just re-deliver!

  10. 配置php时。提示的错误session_start(): Failed to initialize storage module解决办法

    当浏览器输入访问地址后 报这样的错时----session_start(): Failed to initialize storage module 进入到此目录vi /usr/local/php/e ...