直接上demo代码:

MainActivity.java

package com.example.androidemaildemo;import java.util.Properties;import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;import mail.EmailSender;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class MainActivity extends Activity {private Button mButton;private String to = "wardenr_sprites@foxmail.com,5448100202@qq.com";private String subject = "Application Exception for app developer";private String text = "<table align=center width=100%><tr><td align=right>邮件测试mail test</td></tr></table>";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mButton = (Button) findViewById(R.id.button1);mButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubnew Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubint i = EmailSender.send(to, subject, "user return exception information to developer, please find the attached file !");System.out.println("i = " + i);}}).start();// sendEmail();
            }});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);return true;}}

核心类:EmailSender.java

package mail;/**
* int i = EmailSender.send(to, subject, "user return exception information to developer, please find the attached file !");
* 其中第一个参数to是发送给对方的邮箱地址,比如发送给270791800@qq.com,如果是多个邮箱,邮箱地址之间用","(英文逗号隔开)
* 其中第二个参数subject是发给对方邮箱看到的邮件的title,
* 其中第三个参数是邮箱的正文
*/import java.io.UnsupportedEncodingException;
import java.util.Properties;import javax.activation.CommandMap;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.activation.MailcapCommandMap;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;import android.os.Environment;
import android.util.Log;public class EmailSender {private static final String defaultSMTPHost = "smtp.qq.com";private static final String defaultMailFromName = "270791800@qq.com";//以这个邮箱地址的名义发送邮件,改成使用者的邮箱private static final String defaultMailFromPassword = "pake.liu";//上面那个名义上的邮件的邮箱登入密码,改成使用者的邮箱密码,我博文里给的当然是错误密码.public static int send(String mailTos, String mailSubject, String mailText) {// check paramsif (mailTos == null || mailSubject == null || mailText == null)return 0;// encoding paramsString encoding = "iso-8859-1";try {// 标题不需要编码,编码后为乱码// 正文需要编码mailText = new String(mailText.getBytes(), encoding);} catch (UnsupportedEncodingException e) {System.out.println("Fail to encoding mail text to " + encoding);}Properties props = new Properties();props.put("mail.smtp.host", defaultSMTPHost);// 邮件服务器地址props.put("mail.smtp.auth", "true");props.put("mail.smtp.user", "CTOPAY");// 发送方的发送名;props.put("mail.smtp.from", defaultMailFromName);// 发送邮箱地址;props.put("mail.debug", "false");// 不打印构建发送者信息// 构建发送者Authenticator auth = new Authenticator() {public PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(defaultMailFromName,defaultMailFromPassword);}};Session session = Session.getInstance(props, auth);session.setDebug(false);// 不打印发送信息/*** 一下内容是:发送邮件时添加附件*/MimeBodyPart attachPart = new MimeBodyPart();FileDataSource fds = new FileDataSource("/sdcard/crash/exception.log"/** Environment* .* getExternalStorageDirectory* (* )* +* "/crash/exception.log"*/); // 打开要发送的文件MimeMultipart allMultipart = null;Log.i("TAGOO", "" + fds.getName());try {attachPart.setDataHandler(new DataHandler(fds));attachPart.setFileName(fds.getName());allMultipart = new MimeMultipart("mixed"); // 附件// 添加邮件正文attachPart.setContent(mailText, "text/html;charset=UTF-8");
//            allMultipart.addBodyPart(attachPart);
            allMultipart.addBodyPart(attachPart);// 添加
} catch (MessagingException e1) {// TODO Auto-generated catch block
            e1.printStackTrace();}Message msg = new MimeMessage(session);int sendNum = 0;// 发送的数量for (String mailTo : mailTos.split(",")) {try {InternetAddress[] addresses = { new InternetAddress(mailTo) };msg.setRecipients(Message.RecipientType.TO, addresses);// 设置邮件接收地址集msg.setSentDate(new java.util.Date());// 设置邮件发送日期msg.setSubject(mailSubject);// 设置邮件的标题msg.setText(mailText);// 设置邮件的内容(文本)
                msg.setContent(allMultipart);MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");CommandMap.setDefaultCommandMap(mc);Transport.send(msg);// 发送邮件
sendNum++;// 发送记数System.out.println("Success to send email to " + mailTo);} catch (MessagingException e) {System.out.println("Fail to send email for:" + e);}}return sendNum;}
}

PassAuthenticator.java

package com.example.androidemaildemo;import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;public class PassAuthenticator extends Authenticator
{  public PasswordAuthentication getPasswordAuthentication()  {  /*** 这个地方需要添加上自己的邮箱的账号和密码*/String username = "账号";  String pwd = "密码";  return new PasswordAuthentication(username, pwd); }
}  

布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:layout_marginLeft="40dp"android:layout_marginTop="31dp"android:text="Button" /></RelativeLayout>

权限如下:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.INTERNET"></uses-permission><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> 

转载于:https://www.cnblogs.com/MMLoveMeMM/articles/4090734.html

Android 发送邮件信息,附带附件相关推荐

  1. Android发送邮件到指定邮箱(可带附件)

    第一种方法,调用系统的邮件软件来发送 众所周知在Android中调用其他程序进行相关处理,都是使用的Intent.当然,Email也不例外. 在 在Android中,调用Email有三种类型的Inte ...

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

    Android发送邮件的方法实例详解 时间:2021-05-20 本文实例讲述了Android发送邮件的方法.分享给大家供大家参考,具体如下: 在android手机中实现发送邮件的功能也是不可缺少的. ...

  3. mailto 附带附件_我和我的朋友如何将附带项目发展为每月$ 17,000的业务

    mailto 附带附件 In 2014, my friends and I set out to build the best possible web design tools. We built ...

  4. mailto 附带附件_为什么附带项目如此重要

    mailto 附带附件 by Jake Prins 杰克·普林斯(Jake Prins) 为什么附带项目如此重要 (Why side projects are so damn important) T ...

  5. 进阶的阿牛哥之用python向多人发送邮件(带附件)、遍历邮件获取内容(两种方法:imbox、imaplib)

    (一)向多人发送邮件(带附件) 一.使用的库 这个程序涉及两个库:smtplib 和 email 这两个库都是Python自带的,所以不需要额外的下载安装. 二.思路和步骤 总体思路很简单,就像我们平 ...

  6. 关于php使用sendmail发送邮件时中文附件名乱码问题解决方法

    问题描述:在php使用sendmail发送邮件时中文附件名出现乱码,如图: 原因分析:这是由于编码引起的错误. 解决办法:首先强制进行编码换: substr($file_name,strrpos($f ...

  7. iOS12系统应用发送邮件中的附件

    iOS12系统应用发送邮件中的附件 iOS12系统应用发送邮件中的附件,如果发送邮件的内容很多,或者包含文档.图片等,可以以附件的形式进行发送.此时需要使用addAttachmentData(_:mi ...

  8. 【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | SOCKET 网络套接字初始化 | 读取远程端 “Android 模拟器“ 信息 | 向远程端写出数据 )

    文章目录 前言 一.SOCKET 网络套接字初始化 二.SOCKET 网络套接 读取远程端 ( Android 模拟器 ) 信息 三.SOCKET 网络套接 向远程端 ( Android 模拟器 ) ...

  9. 【Android 逆向】Android 系统文件分析 ( Android 系统 root 环境准备 | 查看 Android 根目录信息 )

    文章目录 一.Android 系统 root 环境准备 二.查看 Android 根目录信息 一.Android 系统 root 环境准备 需要一部 root 过的手机 , 或者直接使用带有 root ...

最新文章

  1. os.walk(path)遍历path下的所有目录和文件
  2. leetcode算法题--翻转单词顺序
  3. db2关闭下一句sql的日志_DB2_数据库日志管理
  4. 【EasyUI】DataGrid自定义排序
  5. 椭圆极点极线性质_笔记:关于极点极线的一些思考
  6. 使用C#和MSMQ开发消息处理程序
  7. wav pcm数据是带符号的吗_UE4 C++基础教程 - 基础数据结构
  8. 完美解决:此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求...
  9. PAT 1085. PAT单位排行 (25) - 乙级
  10. 语音识别api_语音识别 api_免费语音识别api - 云+社区 - 腾讯云
  11. RDP(远程桌面很慢) slow performance, Hyper-V,IPv4 Checksum offload
  12. Android开发教程1~3章笔记
  13. SVG 学习四 基础API
  14. 剖析简易计算器带你入门微信小程序开发
  15. 嵌入式linux 中文输入法,基于嵌入式Linux的汉字输入法
  16. Java:Eclipse下载安装教程,以及Eclipse 安装汉化包的方法
  17. Linux 虚拟机内挂载 iso 文件
  18. 快速缓解过敏的简单技巧
  19. element适配svg格式图片
  20. codeforces1438C Engineer Artem

热门文章

  1. Mybatis 处理日期格式自动转换
  2. ztree实现节点事件
  3. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南)(热身赛)
  4. 【服务器】宝塔LNMP安装Discuz!
  5. 【NOIP2009】【Vijos1752】潜伏者
  6. 判断参数大于0_能做条件判断的文本函数
  7. io 错误: socket closed_Tomcat NIO(9)IO线程Overall流程和关键类
  8. 将本地文件push到gitee上面
  9. rope 实用把一段区间的数字整体搬到序列中的一段的时候用
  10. excel换行按什么键_电脑黑屏按什么键恢复 电脑黑屏的原因和恢复方法