Email for Android

Email for Android是基于JavaMail封装的电子邮件库,简化在Android客户端中编写发送和接收电子邮件的的代码。把它集成到你的Android项目中,只需简单配置邮件服务器,即可使用,所见即所得哦!

Install

步骤一、将JitPack存储库添加到根目录的build.gradle中:

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

步骤二、在项目的app模块下的build.gradle里加:

dependencies {

implementation 'com.github.mailhu:email:2.4.0'

}

Instructions

步骤一、在Android项目中的AndroidManifest.xml文件中添加联网权限。

步骤二、在Java代码中使用教程。

1.配置邮件服务器的信息

//配置邮件服务器

EmailConfig emailConfig = new EmailConfig()

.setSmtpHost("smtp.qq.com") //设置发件服务器地址,网易邮箱为smtp.163.com

.setSmtpPort(465) //设置发件服务器端口,网易邮箱为25

.setPopHost("pop.qq.com") //设置收件服务器地址,网易邮箱为pop.163.com

.setPopPort(995) //设置收件服务器端口,网易邮箱为110

.setImapHost("imap.qq.com") //设置收件服务器地址,网易邮箱为imap.163.com

.setImapPort(993) //设置收件服务器端口,网易邮箱为993

.setAccount("from@qq.com") //你的邮箱地址

.setPassword("abcdefg"); //你的邮箱密码或授权码

2.发送邮件的代码

//邮件发送,确保配置emailConfig的信息正确

EmailSendClient emailSendClient = new EmailSendClient(emailConfig);

emailSendClient

.setTo("to@qq.com") //收件人的邮箱地址

.setCc("cc@qq.com") //抄送人的邮箱地址

.setBcc("bcc@qq.com") //密送人的邮箱地址

.setNickname("百年小糊涂") //设置发信人的昵称

.setSubject("这是一封测试邮件") //邮件主题

.setText("Hello World !") //邮件正文,若是发送HTML类型的正文用setContent()

.sendAsyn(this, new GetSendCallback() { //this是调用该代码的Activity

@Override

public void sendSuccess() {

//发送成功(这里可更新UI)

}

@Override

public void sendFailure(String errorMsg) {

//发送失败,errorMsg是错误信息(这里可更新UI)

}

});

3.接收邮件的代码

使用POP3协议接收邮件

//获取邮件,确保配置emailConfig的信息正确

EmailReceiveClient emailReceiveClient = new EmailReceiveClient(emailConfig);

emailReceiveClient

.popReceiveAsyn(this, new GetReceiveCallback() { //this是调用该代码的Activity

@Override

public void gainSuccess(List messageList, int count) {

//获取邮件成功(这里可更新UI)

}

@Override

public void gainFailure(String errorMsg) {

//获取邮件失败,errorMsg是错误信息(这里可更新UI)

}

});

使用IMAP协议接收邮件

//获取邮件,确保配置emailConfig的信息正确

EmailReceiveClient emailReceiveClient = new EmailReceiveClient(emailConfig);

emailReceiveClient

.imapReceiveAsyn(this, new GetReceiveCallback() { //this是调用该代码的Activity

@Override

public void gainSuccess(List messageList, int count) {

//获取邮件成功(这里可更新UI)

}

@Override

public void gainFailure(String errorMsg) {

//获取邮件失败,errorMsg是错误信息(这里可更新UI)

}

});

4.检查邮箱和配置的服务器的信息是否正确的代码

//验证邮箱和检查邮件服务器

EmailExamine emailExamine = new EmailExamine(emailConfig);

emailExamine

.connectServer(this, new GetConnectCallback() { //this是调用该代码的Activity

@Override

public void loginSuccess() {

//邮箱登录成功(这里可更新UI)

}

@Override

public void loginFailure(String errorMsg) {

//邮箱登录失败,errorMsg是错误信息(这里可更新UI)

}

});

5.检查对方是否为垃圾邮件发送者的代码

//检查对方是否为垃圾邮件发送者的代码,使用Foxmail邮箱域名为示例

EmailExamine examine = new EmailExamine();

examine.spamCheck(this, "www.foxmail.com", new GetSpamCheckCallback() { //this是调用该代码的Activity

@Override

public void gotResult(boolean isSpammer) {

String s = (isSpammer)? "是垃圾邮件发送者" : "不是垃圾邮件发送者";

Log.d("oversee", s);

}

});

注:sendAsyn()、popReceiveAsyn()、imapReceiveAsyn(),connectServer(),spamCheck()等方法传入参数Activity时,代表执行完子线程后会切回主线程,若不传入参数Activity时,子线程执行完毕不会切回主线程

步骤三、若使用QQ邮箱发送邮件,登录QQ邮箱,进入【设置】-【帐户】,把下列服务开启,然后获取授权码。如下图:

ProGuard

-dontwarn org.apache.**

-dontwarn com.sun.**

-dontwarn javax.activation.**

-keep class org.apache.** { *;}

-keep class com.sun.** { *;}

-keep class javax.activation.** { *;}

-keep class com.smailnet.email.** { *;}

Update log

Email for Android 2.4.0

增加检测垃圾邮件发送者的接口

Email for Android 2.3.2

再次修复ContentUtil类异常

Email for Android 2.3.1

修复ContentUtil类异常

Email for Android 2.3

增加设置发信人昵称的接口

增加设置抄送人,密送人的接口

增加设置文本型邮件正文的setText( )接口

设置收件人的接口使用setTo( )代替setReceiver( ),2.3版本后建议使用setTo( )

Email for Android 2.2

对发送邮件和接收邮件等接口增加一些新特性

优化部分代码

Email for Android 2.1

增加使用IMAP协议接收邮件的接口

增加检查Host和Port的工具类

Email for Android 2.0.1

修改个别类和方法的命名

Email for Android 2.0

增加使用POP3协议接收邮件接口

增加检查邮件服务器是否可连接的接口

重构EmailConfig类

重构使用SMTP协议发送邮件的类

2.0版本是全新版本(不向下兼容)

Email for Android 1.1

优化和重构代码

增删和修改个别接口

About the author

作者:张观湖

License

Copyright 2018 Lake Zhang

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

档案电子封装包Java类,email: Android电子邮件库(基于JavaMail封装)相关推荐

  1. 数字档案EEP封装包工具软件(单机)

    数字档案EEP封装包工具软件,可以导入nh-deep格式或紫光格式的EEP封装包,进行目录查看和条目信息查看,已经原文文件的查看.为档案管理员提供了win单机版工具,处理数字档案系统移交接收和备份时的 ...

  2. spring 加载java类_在Spring中基于Java类进行配置的完整步骤

    在Spring中基于Java类进行配置的完整步骤 发布于 2020-7-7| 复制链接 基于Java配置选项,可以编写大多数的Spring不用配置XML,下面 前言JavaConfig 原来是 Spr ...

  3. 开源一个友盟 for android 操作的封装包

    开源一个友盟 for android 操作的封装包 介绍 详解 介绍 这个库,把友盟的初始化设置,自定义事件,还有使用时长进行了一层简单的封装,例如,初始化设置 UmengOption option ...

  4. Android R.java类的手动生成

    Android中的资源和R.java类 在Android项目中的res目录中包含了项目使用的各种资源,这些资源全部都分布在res目录下的各个子目录中.每个资源都有两个属性,一个是资源的名字,一个是资源 ...

  5. Spring-基于Java类的配置

    概述 使用Java类提供Bean定义信息 实例 分析 使用基于Java类的配置信息启动Spring容器 直接通过Configuration启动Spring容器 通过AnnotationConfigAp ...

  6. 常用Android第三方库推荐

    目录 1 BaseRecyclerViewAdapterHelper 2  Glide开源图片加载类库 3 OKhttp 网络请求框架 4  Retrofit  网络请求框架 5  EventBus事 ...

  7. ShareEntryActivity java.lang.ClassNotFoundException | Android类找不到问题

    错误堆栈: Process: com.mci.smagazine, PID: 23265java.lang.RuntimeException: Unable to instantiate activi ...

  8. Qt for Android创建AndroidManifest.xml和Java类文件

    前言 随着Qt的不断升级,如今用Qt来做跨平台开发也越来越方便,特别是Qt5.0版本以后加大了对Qt Quick的拓展,用QML来开发移动端的应用非常简单,并且支持的库也越来越多. 今天要讲的是Qt开 ...

  9. android jni 返回java类

    今天,简单讲讲android 在jni中如何返回一个java的类. 之前,我写了一些关于jni的博客,里面返回的都是简单的int类型,那么如果我需要返回很多int和String类型,那么怎么办呢?当然 ...

最新文章

  1. 云计算时代的虚拟化安全
  2. 39 n 39 是不是c语言常量,自考“高级语言程序设计”习题答案详解(39)
  3. boost::mp11::mp_replace_third相关用法的测试程序
  4. 如何安装使用PHP MyAdmin
  5. Bootstrap 3: 图标转换事件 Change icons when toggle
  6. Keras-3 Keras With Otto Group
  7. uniapp跨域两次请求解决方案
  8. leetcode力扣62. 不同路径
  9. 注解之RetentionPolicy,ElementType
  10. W3Cschool_JS学习
  11. 适合小学生阅读的六本历史国学经典推荐。
  12. 【快递100】 物流公司对应编码分享(截止到2021-09-19 最新数据)
  13. 7-FreeSwitch-mrcp-plugin-with-freeswitch(亲测可用,自我整理)
  14. 字节跳动技术评级与面试
  15. 微信小程序,动态改变背景图片
  16. 性能诊断定位之CPU问题排查(一):win10环境1
  17. Excel数据透视表不显示汇总行
  18. 暗藏杀机? 不简单的三目运算符号!
  19. 《introduction to information retrieval》信息检索学习笔记2 词项词汇和倒排记录表
  20. 田中耕一:一个奇怪的诺贝尔奖获得者

热门文章

  1. sql视图能使用触发器吗_白刚玉粉末能重复使用吗
  2. date oracle 表中_oracle数据库 中to_number()、to_char()、to_date()用法介绍
  3. dz开启php5.5,Discuz5.5.0代码高亮显示+运行代码框合成插件 下载第2/4页
  4. ShadeGraph教程之节点详解2:Channel Nodes
  5. html 判断当前窗口是否是子窗口,JavaScript window.open 判断子窗口是否已经存在
  6. VS Code 的 Java 七月更新,新的重构特性
  7. 永恒python配合什么主武器_让Python代码更易维护的七种武器
  8. java 遍历循环_如何在Java中实现循环遍历?
  9. 5天学会python_学会Python自动制作Word,将看到一个5天4位数的赚钱机会
  10. mysql的大字段clob,Oracle数据库导出大字段(CLOB)数据