Android实现收到新短信后自动发邮件功能

 更新时间:2022年05月10日 10:11:00   作者:hellolxb  
这篇文章主要为大家详细介绍了Android实现收到新短信后自动发邮件功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android实现收到新短信后自动发邮件的具体代码,供大家参考,具体内容如下

开发环境 Android Studio 3.2.1
首先,既然跟读短信和发邮件有关,那么就一定要相关的权限,且安装完应用后要手动打开相关权限…

// 接收和读取短信
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
// 访问网络
 <uses-permission android:name="android.permission.INTERNET" />

第二,要用到相关的库,直接下载就行

在库文件中添加

android {
        packagingOptions {
            // 相关证明
            pickFirst 'META-INF/LICENSE.txt'
        }
    }

dependencies {
        // 相关库
        implementation 'com.sun.mail:android-mail:1.6.0'
        implementation 'com.sun.mail:android-activation:1.6.0'
    }

上源码 :

package packageName;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.telephony.SmsMessage;
import android.text.TextUtils;

import java.util.Date;
import java.util.Properties;

import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;

public class MainActivity extends AppCompatActivity  {
   // 自定义广播
   private BroadcastReceiver smsReceiver;
   // 过滤器
   private IntentFilter filter;
   // 邮箱内容
   private String strContent;
   // 邮箱标题
   private String strTitle;
   // 消息处理器
   private Handler handler;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       // 布局文件中没啥东西
       setContentView(R.layout.activity_main);
          //  帅选出接受到的新短信
       filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
       // 给其最大权限
       filter.setPriority(Integer.MAX_VALUE);
          // 一收到新消息就发送邮件
       handler = new Handler() {
           @Override
           public void handleMessage(Message msg) {
               Properties p = new Properties();
               // 后面写发送人 的邮箱类型,qq 的写 smtp.qq.com
               p.put("mail.smtp.host", "smtp.163.com");
               // mail 包下的
               Session session = Session.getInstance(p, null);
               final MimeMessage mess = new MimeMessage(session);
               try {
                   mess.setFrom("发送人邮箱");
                   mess.setRecipients(javax.mail.Message.RecipientType.TO, "接收人邮箱");
                   // 设置邮件标题,当前设置为电话号码
                   mess.setSubject(strTitle);
                   // 设置短信内容,只支持文本
                   mess.setText(strContent);
                   // 设置时间
                   mess.setSentDate(new Date());
                   // 联网操作要在线程中执行
                   new Thread(new Runnable() {
                       @Override
                       public void run() {
                           try {
                               Transport.send(mess, "接收人邮箱", "接收人邮箱的授权码");
                           } catch (MessagingException e) {
                               e.printStackTrace();
                           }
                       }
                   }).start();
               } catch (MessagingException e) {
                   e.printStackTrace();
               }
           }
       };
          // 广播接收到指定内容后进行的操作
       smsReceiver = new BroadcastReceiver() {
           @Override
           public void onReceive(Context context, Intent intent) {
               Object[] objs = (Object[]) intent.getExtras().get("pdus");
               for (Object o : objs) {
                   byte[] pdu = (byte[]) o;
                   SmsMessage sms = SmsMessage.createFromPdu(pdu);
                   // 发送人电话号码
                   strTitle = sms.getOriginatingAddress();
                   // 短信内容
                   strContent = sms.getMessageBody();
                      // 若都不为空则发送邮件
                   if (!TextUtils.isEmpty(strContent) && !TextUtils.isEmpty(strTitle)) {
                       handler.sendEmptyMessage(1);
                   }
               }
           }
       };
       // 开启广播,一定要关闭
       registerReceiver(smsReceiver, filter);
   }

   @Override
   protected void onDestroy() {
       super.onDestroy();
       // 关闭广播
       unregisterReceiver(smsReceiver);
   }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • Android 实现自动打电话与发短信的实例

    Android 实现自动打电话与发短信的实例

    这篇文章主要介绍了Android 实现自动打电话与发短信的实例的相关资料,需要的朋友可以参考下
    2017-05-05
  • Android GestureDetector用户手势检测实例讲解

    Android GestureDetector用户手势检测实例讲解

    这篇文章主要为大家详细介绍了Android GestureDetector用户手势检测实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Android屏幕适配工具类 Android自动生成不同分辨率的值

    Android屏幕适配工具类 Android自动生成不同分辨率的值

    这篇文章主要为大家详细介绍了Android屏幕适配工具类,Android自动生成不同分辨率的值,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • 实战android打包和签名

    实战android打包和签名

    本篇文章给大家通过实例讲解了如何对android项目打包和签名,并把用到的文件和流程做了注视,需要的朋友参考一下吧。
    2017-12-12
  • Android 仿QQ头像自定义截取功能

    Android 仿QQ头像自定义截取功能

    在我们的qq聊天工具中,经常会使用qq头像截取功能,基于代码是怎么实现的呢?下面小编通过本文给大家分享android 仿qq头像自定义截取功能的思路分析及编码实现过程,感兴趣的朋友一起学习吧
    2016-10-10
  • Android串口通讯SerialPort的使用详情

    Android串口通讯SerialPort的使用详情

    这篇文章主要介绍了Android串口通讯SerialPort的使用详情,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的朋友可以参考一下
    2022-09-09
  • Android运用onTouchEvent自定义滑动布局

    Android运用onTouchEvent自定义滑动布局

    这篇文章主要为大家详细介绍了Android运用onTouchEvent写一个上下滑动的布局,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 如何利用matrix实现图片倒影效果

    如何利用matrix实现图片倒影效果

    利用matrix可以实现各种图片的特效,比如图片的旋转、缩放、移动,甚至是图片倒影效果,这篇文章为大家介绍了matrix实现图片倒影的代码,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android  Notification使用方法详解

    Android Notification使用方法详解

    这篇文章主要介绍了Android Notification使用详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • Android实现自动截图脚本

    Android实现自动截图脚本

    这篇文章主要为大家详细介绍了Android实现自动截图脚本,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论