java 发送邮件和读取邮件(163邮箱为例)

来源:互联网 发布:linux oracle 客户端 编辑:程序博客网 时间:2024/05/22 12:20

1,发送邮件

(1)在设置里面打开163邮箱的smtp、pop3,设置授权码

(2)在引用pom.xml中引用mail.jar

<dependency >        <groupId >com.sun.mail </groupId >        <artifactId >javax.mail </artifactId >        <version >1.5.4 </version >  </dependency >
(3)邮件内容不要乱写,否则失败


public class TestJava {public static void main(String[] args) throws MessagingException {Properties prop=new Properties();prop.put("mail.host","smtp.163.com" );prop.put("mail.transport.protocol", "smtp");prop.put("mail.smtp.auth", true);//使用java发送邮件5步骤//1.创建sesssionSession session=Session.getInstance(prop);//开启session的调试模式,可以查看当前邮件发送状态session.setDebug(true);//2.通过session获取Transport对象(发送邮件的核心API)Transport ts=session.getTransport();//3.通过邮件用户名密码链接ts.connect("邮箱名", "授权码");//4.创建邮件Message msg=createSimpleMail(session);//5.发送电子邮件ts.sendMessage(msg, msg.getAllRecipients());}public static MimeMessage createSimpleMail(Session session) throws AddressException,MessagingException{//创建邮件对象MimeMessage mm=new MimeMessage(session);//设置发件人mm.setFrom(new InternetAddress(""));//设置收件人mm.setRecipient(Message.RecipientType.TO, new InternetAddress(""));//设置抄送人mm.setRecipient(Message.RecipientType.CC, new InternetAddress(""));mm.setSubject("第一封JAVA邮件!");mm.setContent("咱们开会吧", "text/html;charset=utf-8");return mm;}}
代码引用:http://www.cnblogs.com/tptptptp/p/5874538.html



2,读取邮件

import java.util.Properties;import javax.mail.Folder;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Session;import com.sun.mail.imap.IMAPFolder;import com.sun.mail.imap.IMAPStore;/** *  使用IMAP协议接收邮件 * @author hj * @time 2017-07-20 */public class ReciveIMAPmail {public static void main(String[] args) {        String imapserver = "imap.163.com"; // 邮件服务器        String user = "用户名";        String password = "授权码";     // 根据自已的密码修改        // 获取默认会话        Properties prop = System.getProperties();        prop.put("mail.imap.host",imapserver);               prop.put("mail.imap.auth.plain.disable","true");        Session mailsession=Session.getInstance(prop,null);        mailsession.setDebug(false); //是否启用debug模式        IMAPFolder folder= null;        IMAPStore store=null;        int total= 0;        try{           store=(IMAPStore)mailsession.getStore("imap");  // 使用imap会话机制,连接服务器           store.connect(imapserver,user,password);           folder=(IMAPFolder)store.getFolder("INBOX"); //收件箱            // 使用只读方式打开收件箱            folder.open(Folder.READ_WRITE);           //获取总邮件数           total = folder.getMessageCount();           System.out.println("-----------------您的邮箱共有邮件:" + total+" 封--------------");           // 得到收件箱文件夹信息,获取邮件列表           Message[] msgs =folder.getMessages();           System.out.println("\t收件箱的总邮件数:" + msgs.length);             System.out.println("\t未读邮件数:" + folder.getUnreadMessageCount());             System.out.println("\t新邮件数:" + folder.getNewMessageCount());             System.out.println("----------------End------------------");        }        catch(MessagingException ex){             System.err.println("不能以读写方式打开邮箱!");             ex.printStackTrace();        }finally {        // 释放资源          try{              if(folder!=null)                  folder.close(true); //退出收件箱时,删除做了删除标识的邮件             if (store != null)                store.close();            }catch(Exception bs){             bs.printStackTrace();            }                     }              }}

可能会报错:

javax.mail.MessagingException: A3 NO SELECT Unsafe Login. Please contact kefu@188.com for help;

  nested exception is:

然后会收到邮件,打开


然后 输入 http://config.mail.163.com/settings/imap/index.jsp?uid=xxxxxx@163.com

进行手机验证就OK;



原创粉丝点击