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

本文介绍了如何使用Java发送和读取163邮箱的邮件。首先,需要在163邮箱设置中开启SMTP和POP3服务,并获取授权码。接着,通过添加mail.jar依赖进行邮件发送。在读取邮件时,可能会遇到安全性问题,解决办法是按照提示进行手机验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.创建sesssion
		Session 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;



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值