android 发送邮件--实现 send email for android

Android Studio 之 Intent 开发 简单Demo ---- 发送Email 该apk是通过调用android设备上已有的发送Email的apk来完成Email的发送的。 布局文件 email_main.xml 源码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ... 阅读详情

Android 发送邮件消息

用途:发送验证码,通过邮箱找回密码

不需要调用客户端直接使用代码进行发送

本项目使用到的jar包–本文结尾会附带下载链接

  1. activation.jar
  2. additionnal.jar
  3. mail.jar

主Activity代码:

具体页面结构:一个按钮,点击按钮发送邮件到指定的邮箱

按钮的点击事件逻辑

记得链接网络必须在子线程中

    /**
     * 发送邮件
     * 我这里是用的163邮箱发送到QQ邮箱
     * 所以设置的MailServerHost为smtp.163.com
     * 如果是QQ邮箱进行发送的话为smtp.qq.com
     * 端口号请自行查阅是否为25
     * 邮箱密码在后面有具体的说明,请看一下
     */
    private void sendEmail() {
        try {
            MailSenderInfo mailInfo = new MailSenderInfo();
            mailInfo.setMailServerHost("smtp.163.com");
            mailInfo.setMailServerPort("25");
            mailInfo.setValidate(true);
            mailInfo.setUserName("你的邮箱地址");  //你的邮箱地址
            mailInfo.setPassword("您的邮箱密码");//您的邮箱密码
            mailInfo.setFromAddress("你的邮箱地址");//和上面username的邮箱地址一致
            mailInfo.setToAddress("接收方的邮件地址");
            mailInfo.setSubject("邮件主题");
            mailInfo.setContent("邮件内容");

            //这个类主要来发送邮件
            SimpleMailSender sms = new SimpleMailSender();
            boolean b = sms.sendTextMail(mailInfo);//发送文体格式,返回是否发送成功的boolean类型

            Log.e("MainActivity", "MainActivity sendEmail()"+b);//sms.sendHtmlMail(mailInfo);//发送html格式

        } catch (Exception e) {
            Log.e("SendMail", e.getMessage(), e);
        }
    }
关于邮箱密码的说明

由于是android端发送邮件,属于客户端进行发送邮件,所以直接用邮件的登录密码进行发送是不可以的,需要在PC网页端进行设置自己的邮箱:开启POP3/SMTP/IMAP服务

QQ邮箱和163邮箱的设置方法

163邮箱设置方法-你的感冒清

QQ邮箱设置方法-你的感冒清

邮件的实体类代码


    public class MailSenderInfo {
        // 发送邮件的服务器的IP和端口
        private String mailServerHost;
        private String mailServerPort = "25";

        // 邮件发送者的地址
        private String fromAddress;
        // 邮件接收者的地址
        private String toAddress;
        // 登陆邮件发送服务器的用户名和密码
        private String userName;
        private String password;
        // 是否需要身份验证
        private boolean validate = true;
        // 邮件主题
        private String subject;
        // 邮件的文本内容
        private String content;
        // 邮件附件的文件名
        private String[] attachFileNames;

        /**
         * 获得邮件会话属性
         */
        public Properties getProperties() {
            Properties p = new Properties();
            p.put("mail.smtp.host", this.mailServerHost);
            p.put("mail.smtp.port", this.mailServerPort);
            p.put("mail.smtp.auth", validate ? "true" : "false");
            return p;
        }

        public String getMailServerHost() {
            return mailServerHost;
        }

        public void setMailServerHost(String mailServerHost) {
            this.mailServerHost = mailServerHost;
        }

        public String getMailServerPort() {
            return mailServerPort;
        }

        public void setMailServerPort(String mailServerPort) {
            this.mailServerPort = mailServerPort;
        }

        public boolean isValidate() {
            return validate;
        }

        public void setValidate(boolean validate) {
            this.validate = validate;
        }

        public String[] getAttachFileNames() {
            return attachFileNames;
        }

        public void setAttachFileNames(String[] fileNames) {
            this.attachFileNames = fileNames;
        }

        public String getFromAddress() {
            return fromAddress;
        }

        public void setFromAddress(String fromAddress) {
            this.fromAddress = fromAddress;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public String getToAddress() {
            return toAddress;
        }

        public void setToAddress(String toAddress) {
            this.toAddress = toAddress;
        }

        public String getUserName() {
            return userName;
        }

        public void setUserName(String userName) {
            this.userName = userName;
        }

        public String getSubject() {
            return subject;
        }

        public void setSubject(String subject) {
            this.subject = subject;
        }

        public String getContent() {
            return content;
        }

        public void setContent(String textContent) {
            this.content = textContent;
        }
  }

简单邮件(不带附件的邮件)发送器 代码


    /**
     * 简单邮件(不带附件的邮件)发送器
     */
    public class SimpleMailSender {
        /**
         * 以文本格式发送邮件
         *
         * @param mailInfo 待发送的邮件的信息
         */
        public boolean sendTextMail(MailSenderInfo mailInfo) {
            // 判断是否需要身份认证
            MyAuthenticator authenticator = null;
            Properties pro = mailInfo.getProperties();
            if (mailInfo.isValidate()) {
                // 如果需要身份认证,则创建一个密码验证器
                authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
            }
            // 根据邮件会话属性和密码验证器构造一个发送邮件的session
            Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
            try {
                // 根据session创建一个邮件消息
                Message mailMessage = new MimeMessage(sendMailSession);
                // 创建邮件发送者地址
                Address from = new InternetAddress(mailInfo.getFromAddress());
                // 设置邮件消息的发送者
                mailMessage.setFrom(from);
                // 创建邮件的接收者地址,并设置到邮件消息中
                Address to = new InternetAddress(mailInfo.getToAddress());
                mailMessage.setRecipient(Message.RecipientType.TO, to);
                // 设置邮件消息的主题
                mailMessage.setSubject(mailInfo.getSubject());
                // 设置邮件消息发送的时间
                mailMessage.setSentDate(new Date());
                // 设置邮件消息的主要内容
                String mailContent = mailInfo.getContent();
                mailMessage.setText(mailContent);
                // 发送邮件
                Transport.send(mailMessage);
                return true;
            } catch (MessagingException ex) {
                ex.printStackTrace();
            }
            return false;
        }

        /**
         * 以HTML格式发送邮件
         *
         * @param mailInfo 待发送的邮件信息
         */
        public static boolean sendHtmlMail(MailSenderInfo mailInfo) {
            // 判断是否需要身份认证
            MyAuthenticator authenticator = null;
            Properties pro = mailInfo.getProperties();
            //如果需要身份认证,则创建一个密码验证器
            if (mailInfo.isValidate()) {
                authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
            }
            // 根据邮件会话属性和密码验证器构造一个发送邮件的session
            Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
            try {
                // 根据session创建一个邮件消息
                Message mailMessage = new MimeMessage(sendMailSession);
                // 创建邮件发送者地址
                Address from = new InternetAddress(mailInfo.getFromAddress());
                // 设置邮件消息的发送者
                mailMessage.setFrom(from);
                // 创建邮件的接收者地址,并设置到邮件消息中
                Address to = new InternetAddress(mailInfo.getToAddress());
                // Message.RecipientType.TO属性表示接收者的类型为TO
                mailMessage.setRecipient(Message.RecipientType.TO, to);
                // 设置邮件消息的主题
                mailMessage.setSubject(mailInfo.getSubject());
                // 设置邮件消息发送的时间
                mailMessage.setSentDate(new Date());
                // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
                Multipart mainPart = new MimeMultipart();
                // 创建一个包含HTML内容的MimeBodyPart
                BodyPart html = new MimeBodyPart();
                // 设置HTML内容
                html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
                mainPart.addBodyPart(html);
                // 将MiniMultipart对象设置为邮件内容
                mailMessage.setContent(mainPart);
                // 发送邮件
                Transport.send(mailMessage);
                return true;
            } catch (MessagingException ex) {
                ex.printStackTrace();
            }
            return false;
        }
}

辅助类


    public class MyAuthenticator extends Authenticator {
        String userName = null;
        String password = null;

        public MyAuthenticator() {
        }

        public MyAuthenticator(String username, String password) {
            this.userName = username;
            this.password = password;
        }

        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(userName, password);
        }
}

相关jar包下载

相关jar包一键打包下载

中间可能会遇到的问题

可能会出现的问题-你的感冒清

笔者QQ:你的感冒清(337081267)

Android 发送邮件(简单很快啊) 代码很简单,直接复制,各个属性都在上边写明,然后修改就可以用。它主要是通过调用系统的mail发送邮件。如果你安装了QQ邮箱、gmail邮箱、163邮箱的android客户端,自己选一个,选中后会自动填充内容,如果你没有安装上述邮件客户端,那么,就调用系统的邮件客户端,部分会提示你绑定邮箱,你可以用自己选。这个原理也是一样,只是这个会调起来更多的选择,例如微博,淘宝啊之类的。我们标识的邮件(mailto),但是实际执行却成了分享文件,虽然其中也有邮件客户端,但是却增加了用户的操作步骤。 阅读详情

相关推荐

Android实现qq邮箱发送DemoMail.zip

实现了Android发送邮件的需求,测试用的是QQ邮箱

安卓给qq邮箱发送验证码

有问题联系qq 2500432076

wengweng_cdp的博客 384

pycharm添加Anaconda解释器显示不出来

因为我之前下载的是pycharm最新版本2024.1的,所以我抱着试一试的心态卸载重装了2021.3.3的,创建新文件的时候立刻就自己识别好了conda环境。就是图中画圈的地方,之前一直显示为python的图标,但是再Python Interpreter后面跟的路径确实是我下载anaconda的地方。另外一种方法就是使用Virtualenv Environment方式配置,但是我的pycharm还是没有识别出conda的图标。首先是这位的方法,先添加系统解释器,再重启,但是我的图标还是python。

2202_75803271的博客 4006

Android中使用SMTP发送邮件

[size=medium] 最近需要做一个发邮件的程序,要求程序自己搞定,不能够通过Intent去调用Gmail等客户端程序。恰好Google Code上有一个对JavaMail的移植,秉着代码复用的精神,copy了一份下来,打了个Jar包,便于使用。在此分享给大家。[/size] 使用方式: [code="java"] public class JavaMailActivity ...

mentats的专栏 950

Python 包安装报错:ERROR: No matching distribution found for xxx 的全面排查指南

本文全面解析Python包安装时常见的`ERROR: No matching distribution found for xxx`报错。从检查包名拼写、网络与镜像源配置,到深入分析Python版本、操作系统等环境兼容性问题,提供了从简到繁的排查步骤。文章还介绍了使用`pip debug`、`-v`参数等高级诊断工具,并给出了更换包管理器、使用Docker等终极解决方案,帮助开发者高效解决依赖安装难题。

p8q9r0的博客 897

【语音识别入门】特征提取(Python完整代码)

给定一段音频,请提取12维MFCC特征和23维FBank,阅读代码预加重、分帧、加窗部分,完善作业代码中FBank特征提取和MFCC特征提取部分,并给出最终的FBank特征和MFCC特征,存储在纯文本中,用默认的配置参数,无需进行修改。抽样时频率不够高,抽样出来的点既代表了信号中的低频信号的样本值,也同时代表高频信号样本值,在信号重建的时候,高频信号被低频信号代替,两种波形完全重叠在一起,形成严重失真。DFT得到了每个频带上信号的能量,但是人耳对频率的感知不是等间隔的,近似于对数函数。

weixin_51293984的博客 1万+

android 邮件发送

由于公司有库存设备,但是老板不舍得买软件,每次仓库同事出库都是手动统计设备sn号,很是麻烦。想着写个程序通过PDA实现条码识别,然后通过邮箱发送到PC端。今天简单分享下自己踩得坑 本文以163邮箱为例 1、首先需要在163邮箱中开通POP3/SMTP服务并获取授权码, 保留好授权码、保留好授权码、保留好授权码 下面直接上代码 2、新建一个EmailSender类 import android.app.blob.BlobStoreManager; import java.io.File..

bobo812的博客 2353

银河麒麟V10SP1实战:5步搞定AD域登录(附Samba+Winbind配置详解)

本文提供银河麒麟V10 SP1操作系统无缝集成Windows AD域的实战指南。文章深入解析了Samba、Winbind与Kerberos三大核心组件的协作原理,并详细阐述了从环境准备、软件包安装、配置文件定制到执行加域及排错的全流程。特别针对2403等新版本提供了关键配置差异与避坑要点,旨在帮助企业运维人员实现高效、稳定的域环境登录与管理。

weixin_29269441的博客 293

Android 发送邮箱(异步处理)

【代码】Android 发送邮箱(异步处理)

wzy992981933的博客 692

高分思路!挑战7天完成一篇网状meta DAY1-7

PASSION!继续析挑战,7天完成一篇网状meta分!

MR_SCI_help的博客 786

EV1527、PT2262傻傻分不清?一文讲透常见315/433MHz遥控编码协议区别与选型

本文深度对比了EV1527、PT2262和SC5262三种常见的315/433MHz遥控编码协议,详细解析了它们的技术特点、成本效益和适用场景。EV1527作为低成本方案的首选,特别适合智能家居和简易安防设备;PT2262在稳定性和兼容性上表现优异;而SC5262则在安全性方面具有显著优势。文章还提供了实用的选型框架和工程建议,帮助开发者在不同应用场景中做出最优决策。

weixin_33640562的博客 349

android 自动发送邮件,android实现自动发送邮件

本文实例为大家分享了实现了一个android自动发送邮件的demo。支持163,qq邮箱需要添加activation.jar,additionnal.jar和mail.jar这三个包首先是一个EmailSender类import java.io.File;import java.util.Date;import java.util.Properties;import javax.activatio...

weixin_34921325的博客 755

爬虫Incapsula reese84加密案例:Etihad航空(纯算法)

爬虫Incapsula reese84加密案例:Etihad航空,本文就不再讲解如何找加密参数、定位加密参数,以及分析加密的一个过程。就直接从扣算法开始,扣算法前先看之前讲解的加密函数生成的过程,文章会一个函数一个函数的讲解扣算法。fiddler根据规则替换本地文件。调试过程中遇到部分环境不一样是正常的,具体还要根据自己调试的js为准,就像之前补环境时是有二十一个循环,这次扣算法多出一个循环,不过大部分环境是一样的第一个函数:通过document.addEventListener添加了很多事件。

老衲爱洗头的博客 1992

Android - Email 发送电子邮件

Email电子邮件是通过网络从一个系统用户以电子方式分发给一个或多个收件人的消息。在启动 Email 活动之前,您必须了解带有意图的电子邮件功能,Intent 是将数据从一个组件传送到应用程序内部或应用程序外部的另一个组件。要从您的应用程序发送电子邮件,您不必从一开始就实现电子邮件客户端,但您可以使用现有的客户端,例如 ...

小屁孩大帅-保密的博客 1446

Android Binder——数据传递载体(二十一)

同一进程间的对象传递都是通过引用来做的,因而本质上就是传递了一个内存地址。而跨进程采用了虚拟内存机制,两个进程都有自己独立的内存地址空间,所以跨进程传递的地址值是无效的。进程间的数据传递是 Binder 机制中的重要一环,Android 系统中担负这一重任的就是 Parcel。Parcel 是一种数据的载体,用于承载希望通过 IBinder 发送的相关信息(包括数据和对象引用)。正是基于 Parcel 这种跨进程传输数据的能力,进程间的 IPC 通信才能更加平滑可靠。

小旭的专栏 576

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android studio发邮件功能,Android发送电子邮件

电子邮件是通过电子方式从一个系统用户通过网络分发给一个或多个收件人的邮件。在开始电子邮件活动之前,您必须意图了解电子邮件功能,Intent在应用程序或应用程序外部将数据从一个组件传输到另一个组件。要从应用程序发送电子邮件,您不必从头开始实现电子邮件客户端,但您可以使用现有的电子邮件,如Android,Gmail,Outlook,K-9 Mail等提供的默认电子邮件应用程序。对于此目的,我们需要编写...

weixin_42511270的博客 1922

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

调用android邮件程序,Android开发中怎样调用系统Email发送邮件(多种调用方式)

我们都知道,在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外。在Android中,调用Email有三种类型的Intent:Intent.ACTION_SENDTO 无附件的发送Intent.ACTION_SEND 带附件的发送Intent.ACTION_SEND_MULTIPLE 带有多附件的发送当然,所谓的调用Email,只是说Email可以接收I...

weixin_28976245的博客 852

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android简单发送邮件(可带附件)

发送邮件

步春良 8322

android中发送邮件

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) 在移动互联网时代,手机邮件已不是什么新鲜事了,我们可以使用内置的Gmail引擎来发送邮件,也可以使用SMTP来发送邮件,下面用一个简单示例来演示邮件的发送,包括单方发送邮件、多方发送邮件以及抄送邮件,密送邮件,发送...

孤云博客 2548

Android点击WebView网页中的email发送邮件调用

Android点击WebView网页中的email发送邮件调用: webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { url = url.replace("mailto:"...

zwn_software的博客 1656

android发送电子邮件,Android发送电子邮件

电子邮件 是通过电子方式从一个系统用户通过网络分发给一个或多个接收者的消息。在开始电子邮件活动之前,您必须知道具有意图的电子邮件功能,Intent将数据从一个组件传送到应用程序中或应用程序外部的另一个组件。要从您的应用程序发送电子邮件,您不必从头开始实施电子邮件客户端,但您可以使用现有的电子邮件客户端,例如Android,Gmail,Outlook,K-9 Mail等提供的默认电子邮件应用程序。目...

weixin_31440053的博客 1970

android 后台邮件发送,Android中使用Service实现后台发送邮件功能实例

本文实例讲述了Android中使用Service实现后台发送邮件功能。分享给大家供大家参考,具体如下:程序如下:import android.app.Activity;import android.content.Intent;import android.content.res.Resources.NotFoundException;import android.os.Bundle;import...

weixin_27964579的博客 526

android studio发邮件功能,Android发送邮件的方法实例详解

本文实例讲述了Android发送邮件的方法。分享给大家供大家参考,具体如下:在android手机中实现发送邮件的功能也是不可缺少的。如何实现它呢?下面以简单的例子进行说明。程序如下:import java.util.regex.Matcher;import java.util.regex.Pattern;import android.app.Activity;import android.cont...

weixin_32395459的博客 1731

android+发邮件,Android发送邮件的方法实例详解

Android发送邮件的方法实例详解时间:2021-05-20本文实例讲述了Android发送邮件的方法。分享给大家供大家参考,具体如下:在android手机中实现发送邮件的功能也是不可缺少的。如何实现它呢?下面以简单的例子进行说明。程序如下:import java.util.regex.Matcher;import java.util.regex.Pattern;import android.a...

weixin_39929961的博客 859
上一篇: android异常 More than one file was found with OS independent path 'META-INF/XXX'
下一篇: spring配置文件比较全的约束
「已注销」
博客等级 码龄11年 142粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

送给作者一个bug通过秘籍!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值