javamail 使用gmail收发邮件

关于javamail在android SDK中使用,网上已经有很多资料,这里不再赘述。

以下文章说下javamail在收发gmail邮箱进行收发邮件的一些设置

1.发送邮件

                      密码 验证

	class PopupAuthenticator extends Authenticator {
		public PasswordAuthentication getPasswordAuthentication() {
			String username = "zhouxufeng2012@gmail.com"; // 邮箱登录帐号
			String pwd = "XXXXXX"; // 登录密码
			return new PasswordAuthentication(username, pwd);
		}
	}

                     参数设置

		  props.setProperty("mail.smtp.host", "smtp.gmail.com");
		  props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
		  props.setProperty("mail.smtp.socketFactory.fallback", "false");
		  props.setProperty("mail.smtp.port", "465");
		  props.setProperty("mail.smtp.socketFactory.port", "465");
		  props.setProperty("mail.smtp.auth", "true");
		  props.setProperty("mail.smtp.ssl",  "true");
		  props.setProperty("mail.smtp.starttls.enable","true");
		PopupAuthenticator auth = new PopupAuthenticator();
		Session session = Session.getInstance(props, auth);
		MimeMessage message = new MimeMessage(session);
		           
		Address addressFrom;
		Address addressTo;
		Address addressCopy;
			addressFrom = new InternetAddress("zhouxufeng2012@gmail.com", "Johnson");
			addressTo = new InternetAddress("zhouxufeng2012@gmail.com", "gZhou");
			message.setText("中文测试");
			message.setSubject("H--H");
			message.setFrom(addressFrom);
			message.addRecipient(Message.RecipientType.TO,addressTo);
			message.addRecipient(Message.RecipientType.CC,addressCopy);
			message.saveChanges();
			Transport.send(message);

2.接收邮件
gmail接收邮件有两种方式,pop3方式和imap方式,pop3的我没有试过,贴下imap接收的代码

 

 

        Properties props = new Properties();
        props.setProperty("mail.imap.host", "imap.gmail.com");
        props.put("mail.store.protocol", "imap");  
        props.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.setProperty("mail.imap.socketFactory.fallback", "false");
        //props.put("mail.imap.connectiontimeout", ConfigKeys.IMAP_CONNECTIONTIMEOUT);

        
        props.setProperty("mail.imap.port", "993");
        props.setProperty("mail.imap.socketFactory.port", "993");
        
        PopupAuthenticator auth = new PopupAuthenticator();
        Session session = Session.getInstance(props,auth);
        session.setDebug(true);
        
        
        		Store store;
		int count;
		store = session.getStore();
		store.connect();
	        Folder folder = store.getFolder("INBOX");
	        folder.open(Folder.READ_WRITE);
	        Message msgs[] = folder.getMessages();
	        count = msgs.length;
	        System.out.println("Message Count:"+count);
	        ReciveMail rm = null;
	        for(int i=0;i<count;i++){
	            rm = new ReciveMail((MimeMessage) msgs[i]);
	            rm.recive(msgs[i],i);
	            System.out.println("Message:"+rm.getBodyText());
	        } 
	        folder.close(true);
	        store.close();


3. 邮件删除
 imap方式比pop3多的功能就是对邮箱的一些操作
在网上看到的一些大侠们说需要添加这么两句,就能实现接收后立即删除

   msgs[i].setFlag(Flags.Flag.DELETED, true);  
             msgs[i].saveChanges(); 



         但我试了下,仅上面一句就可以了,加上第二句反而会报错,如下

         for(int i=0;i<count;i++){
             rm = new ReciveMail((MimeMessage) msgs[i]);
             rm.recive(msgs[i],i);
             
            msgs[i].setFlag(Flags.Flag.DELETED, true);  
            //msgs[i].saveChanges(); 
         }


 

 

 

 


 

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

风吟1987

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值