1.首先用的jar包为javaemail

下载地址:

https://yunpan.cn/cB3kY8WIvcGtU (提取码:e042)

2.工具包

package com.kllayhello.utils;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log; import java.util.Properties; import javax.activation.CommandMap;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.activation.MailcapCommandMap;
import javax.mail.Message;
import javax.mail.MessagingException;
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 javax.mail.internet.MimeUtility;
import javax.mail.util.ByteArrayDataSource; /**
* Created by Administrator on 2016/6/30.
* http://www.jb51.net/article/38158.htm
* http://blog.csdn.net/svenke2011/article/details/8229521
*
* http://blog.csdn.net/mad1989/article/details/25964495
*
* http://blog.csdn.net/chinafe/article/details/7183400
*http://blog.csdn.net/xanxus46/article/details/8296529
* http://blog.csdn.net/kudy21/article/details/7665434
*/
public class EmailUtils{ /**
* android内部发送邮件
* 调用手机邮箱
* 不能自动发送
* sendto 发送邮件
* */
public void sendTOEmail(String title,String content,Context context){
Intent data=new Intent(Intent.ACTION_SENDTO);
data.setData(Uri.parse("mailto:qg@17xu.com"));
data.putExtra(Intent.EXTRA_SUBJECT, title);
data.putExtra(Intent.EXTRA_TEXT, content);
context.startActivity(data);
}
/**
* 调用手机邮箱待附件的
* 不能自动发送
* */
public void sendToFileEmail(String title,String content,Context context){
Intent intent = new Intent(Intent.ACTION_SEND);
String[] tos = { "qq@17xu.com" };
String[] ccs = { "qq@17xu.com" };
String[] bccs = {"qq@17xu.com"};
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_BCC, bccs);
intent.putExtra(Intent.EXTRA_TEXT, content);
intent.putExtra(Intent.EXTRA_SUBJECT, title);
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///mnt/sdcard/qq.png"));
intent.setType("image/*");
intent.setType("message/rfc882");
Intent.createChooser(intent, "Choose Email Client");
context.startActivity(intent);
}
/**
* 发送邮件
* */
/**
* 邮件发送程序
*
* @param host
* 邮件服务器 如:smtp.qq.com
* @param address
* 发送邮件的地址 如:qq@qq.com
* @param from
* 来自: qq@qq.com
* @param password
* 您的邮箱密码
* @param to
* 接收人
* @param port
* 端口(QQ:25)
* @param subject
* 邮件主题
* @param content
* 邮件内容
* @throws Exception
*/
public void SendEmail(String host, String address, String from, String password, String to, String port, String subject, String content) throws Exception {
Multipart multiPart;
String finalString = ""; Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", address);
props.put("mail.smtp.password", password);
props.put("mail.smtp.port", port);
props.put("mail.smtp.auth", "true");
Log.i("Check", "done pops");
Session session = Session.getDefaultInstance(props, null);
DataHandler handler = new DataHandler(new ByteArrayDataSource(finalString.getBytes(), "text/plain"));
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setDataHandler(handler);
Log.i("Check", "done sessions"); multiPart = new MimeMultipart();
InternetAddress toAddress;
toAddress = new InternetAddress(to);
message.addRecipient(Message.RecipientType.TO, toAddress);
Log.i("Check", "added recipient");
message.setSubject(subject);
message.setContent(multiPart);
message.setText(content); Log.i("check", "transport");
Transport transport = session.getTransport("smtp");
Log.i("check", "connecting");
transport.connect(host, address, password);
Log.i("check", "wana send");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
Log.i("check", "sent");
}
/**
* 发送附件邮件
* http://cuisuqiang.iteye.com/blog/1586023
* */
/**
* 邮件发送程序
*
* @param host
* 邮件服务器 如:smtp.qq.com
* @param address
* 发送邮件的地址 如:qq@qq.com
* @param from
* 来自: qq@qq.com
* @param password
* 您的邮箱密码
* @param to
* 接收人
* @param port
* 端口(QQ:25)
* @param subject
* 邮件主题
* @param content
* 邮件内容
* @throws Exception
*/
public void SendEmailfile(String host, String address, String from, String password, String to, String port, String subject, String content,String file_path) throws Exception {
MimeMultipart multiPart;
String finalString = ""; Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", address);
props.put("mail.smtp.password", password);
props.put("mail.smtp.port", port);
props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, null);
DataHandler handler = new DataHandler(new ByteArrayDataSource(finalString.getBytes(), "text/plain"));
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setDataHandler(handler); multiPart = new MimeMultipart("mixed"); //附件 InternetAddress toAddress;
toAddress = new InternetAddress(to);
message.addRecipient(Message.RecipientType.TO, toAddress); //添加收件人
Log.i("Check", "added recipient");
message.setSubject(subject);
// 邮件内容
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(
"<body background='#'>"
+ "<div style='position: absolute; left: 390px; top: 150px;height: "
+ "100px;width: 200px;' align='center'>"
+ "<font color='red'>这是测试邮件,请勿回复</font>" + "</div></body>",
"text/html;charset=UTF-8");
// TODO 组装的顺序非常重要,一定要先组装文本域,再组装文件
multiPart.addBodyPart(htmlPart); //附件添加
try{
MimeBodyPart attachPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(file_path); //打开要发送的文件
DataHandler dh=new DataHandler(fds);
attachPart.setDataHandler(dh);
attachPart.setFileName(MimeUtility.encodeText(dh.getName())); //设置名称 multiPart.addBodyPart(attachPart); //添加附件
message.setContent(multiPart); //附件设置内容
message.saveChanges(); //保存邮件 }catch (Exception e){
System.out.print("File Bug:::"+e.getMessage());
} Transport transport = session.getTransport("smtp");
transport.connect(host, address, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
Log.i("check", "sent");
System.out.println("send success!");
}
/**
* 暂时不能用,有时间再研究
* 发送待附件的邮件
*str_to_mail 发邮件的目的地(收件人信箱)
* str_from_mail 发邮件的出发地(发件人的信箱)
* str_smtp host 发件人使用发邮件的电子信箱服务器
* str_user 发件人用户名
* str_pass 发件人密码
* str_title 邮件标题
* str_body 邮件内容
* str_file_path 附件
* */
public void send_mail_file(String str_to_mail,String str_from_mail,String str_smtp,String str_user,String str_pass,String ports,String str_title,String str_body,String str_file_path)
{
Log.v("filesend","send_mail_file");
String host = str_smtp; //发件人使用发邮件的电子信箱服务器
String from = str_from_mail; //发邮件的出发地(发件人的信箱)
String to = str_to_mail; //发邮件的目的地(收件人信箱) Log.v("filesend",str_smtp);
Log.v("filesend",str_from_mail);
Log.v("filesend",str_to_mail); Properties props = System.getProperties();// Get system properties
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);// Setup mail server
//发件人邮箱和密码
props.put("mail.smtp.user", str_user);
props.put("mail.smtp.password", str_pass);
props.put("mail.smtp.port", ports);
props.put("mail.smtp.auth", "true"); //这样才能通过验证 Session session = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session); // Define message
try {
message.setFrom(new InternetAddress(from)); // Set the from address
} catch (MessagingException e) {
e.printStackTrace();
}
try {
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));// Set the to address
message.setSubject(str_title);// Set the subject
message.setText(str_body);// Set the content
} catch (MessagingException e) {
e.printStackTrace();
} MimeBodyPart attachPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(str_file_path); //打开要发送的文件
try {
attachPart.setDataHandler(new DataHandler(fds));
attachPart.setFileName(fds.getName());
} catch (MessagingException e) {
e.printStackTrace();
} MimeMultipart allMultipart = new MimeMultipart("mixed"); //附件
try {
allMultipart.addBodyPart(attachPart);//添加
message.setContent(allMultipart);
message.saveChanges();
} catch (MessagingException e) {
e.printStackTrace();
} try {
//报错解决方法
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(message);//开始发送
} catch (MessagingException e) {
e.printStackTrace();
}
} }

3.使用工具包:

  but_emailtest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//使用HandlerThread
mhandlerthread=new HandlerThread("myhandlerthread");
mhandlerthread.start();
mhandler = new Handler(mhandlerthread.getLooper());
mhandler.post(mRunnable); }
}); }
Runnable mRunnable = new Runnable() { @Override
public void run() {
NetworkUtils nu=new NetworkUtils();
EmailUtils email=new EmailUtils();
//emsuper.run();ail.sendToFileEmail("哈哈哈test","这是荣哦支持你下哈哈",MinShiLi.this);
String to="fajianren@17xu.com";
String host = "smtp.17xu.com";
String address = "88888@17xu.com"; //发件人地址
String from = "88888@17xu.com";
String password = "******";// 密码
String filepath=nu.getSDPath()+"/"+"qq.png";
String port = "25"; //发邮件端口号
try {
//email.SendEmail(host, address, from, password, to, port, "主题测试", "内容哦哈哈哈哈哈哈哈");
//附件
email.SendEmailfile(host, address, from, password, to, port, "主题测试", "内容哦哈哈哈哈哈哈哈",filepath);
} catch (Exception e) {
e.printStackTrace();
}
}
};

4.sd卡获取文件路径、判断网络是否链接

package com.kllayhello.utils;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Environment; import java.io.File; /**
* Created by Administrator on 2016/6/30.
*/
public class NetworkUtils {
/**
* 判断网络是否链接
* */
public boolean isNetworkConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null) {
return mNetworkInfo.isAvailable();
}
}
return false;
} /**
* 判断sd卡是否存在 并获取路径
* */
public String getSDPath(){
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState()
.equals(android.os.Environment.MEDIA_MOUNTED);//判断sd卡是否存在
if(sdCardExist)
{
sdDir = Environment.getExternalStorageDirectory();//获取跟目录
}
return sdDir.toString();
} }

参考文件:

* http://cuisuqiang.iteye.com/blog/1586023

* http://www.jb51.net/article/38158.htm
* http://blog.csdn.net/svenke2011/article/details/8229521
*
* http://blog.csdn.net/mad1989/article/details/25964495
*
* http://blog.csdn.net/chinafe/article/details/7183400
*http://blog.csdn.net/xanxus46/article/details/8296529
* http://blog.csdn.net/kudy21/article/details/7665434

android--email发送邮件,文本还有附件形式的邮件的更多相关文章

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

    项目中遇到了一个发送邮件的功能,在网上查了很多,资料也很多.这里就不一一介绍了,只是写出我使用的方案(最简单的) Intent email = new Intent(android.content.I ...

  2. java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板

    java 利用spring JavaMailSenderImpl发送邮件,支持普通文本.附件.html.velocity模板 博客分类: Java Spring   本文主要介绍利用JavaMailS ...

  3. Android开发中怎样调用系统Email发送邮件(多种调用方式)

    在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情 我们都知道,在Android中 ...

  4. Android将日志信息自动发送到指定的邮箱中 邮件的内容以附件形式发送

    今日整合了网上一些大神的例子(具体看了那些大神的?这个真不好意思我忘记了.下次再整合一定给大家补上,这次也只有默默的给那几个大神说声抱歉了.)做了一个“记录android项目中的日志信息,并将日志信息 ...

  5. ci框架(codeigniter)Email发送邮件、收件人、附件、Email调试工具

        ci框架(codeigniter)Email发送邮件.收件人.附件.Email调试工具 Email 类         CodeIgniter 拥有强大的 Email 类来提供如下的功能: 多 ...

  6. android Email总结文档

    目录:src\com.android.email.activity 一. Welcome.java 根据AndroidManifest.xml可知该文件为程序入口文件: 加载该文件时,查询数据库账户列 ...

  7. Android开发:文本控件详解——TextView(一)基本属性

    一.简单实例: 新建的Android项目初始自带的Hello World!其实就是一个TextView. 在activity_main.xml中可以新建TextView,从左侧组件里拖拽到右侧预览界面 ...

  8. Android 后台发送邮件 (收集应用异常信息+Demo代码)

    上一次说了如何收集我们已经发布的应用程序的错误信息,方便我们调试完善程序.上次说的收集方法主要是把收集的信息通过Http的post请求把相关的异常信息变成请求参数发送到服务器.这个对做过web开发的人 ...

  9. Android 中发送邮件

    第一步.导入第三方jar包 Android实现发送邮件,首先需要依赖additional.jar.mail.jar和activation.jar这3个jar包. Google提供了下载地址:https ...

随机推荐

  1. drupal7中CKEditor开启上传图片功能

    在drupal建站中,所见即所得编辑器提供了友好的界面.也提高开发效率,而CKEditor是一款非常不错的编辑器.定制性相当高,在这推荐给大家. CKEditor和其它模块(IMCE)搭配下在文字排版 ...

  2. 金山卫士开源软件之旅(十) KSafeMainproject的分析 1

    上一次看金山开源到如今已有一两个月了.期间看到QQ群里大家对它非常是热情. 近期有时间想看看金山的主界面projectKSafeMain,自己水平有限,总结的东西浅显.但还是愿意拿来与大家分享.希望对 ...

  3. CSS3 grayscale滤镜图片变黑白实例页面

    在网站加入友情链接的LOGO时,因为不同logo颜色的问题,和主题色调可能产生冲突, 我选择用CSS3滤镜让logo变黑白,hover时变回原本的彩色 CSS代码: .gray { -webkit-f ...

  4. ContentType 属性 MIME

    ".asf" = "video/x-ms-asf" ".avi" = "video/avi" ".doc&qu ...

  5. [转]spring 监听器 IntrospectorCleanupListener简介

    "在服务器运行过程中,Spring不停的运行的计划任务和OpenSessionInViewFilter,使得Tomcat反复加载对象而产生框架并用时可能产生的内存泄漏,则使用Introspe ...

  6. mysql之数据库特性认识

    最近面试经常被面试官问道关于数据库方面的知识,于是总结一下面试官问的题以及自己对数据库的认识 1.之前百度面试官问了我一个特别基础的sql问题:如何清除表的所有记录,以前在学校做项目开发的时候有使用过 ...

  7. Eclipse+EGit的配置注意点, 以及解决Github多个本地仓库之间的冲突

    问题描述 不同本地仓库(e.g. Repo1, Repo2)之间同时修改一个文件时, 出现文件无法merge的情况. 具体表现为, 冲突(红色双向实心箭头)一直存在, 点pull没反应, 点push报 ...

  8. 安装爬虫scrapy

    使用easy_install安装scrapy,报错 error: Setup script exited with error: command 'gcc' failed with exit stat ...

  9. java新特性之可变参数

    public class NewDemo01 {     public static void main(String[] args) {         System.out.print(" ...

  10. js传参java接收乱码解决方案

    js传参处理 encodeURI(encodeURI(name)); java接收处理 URLDecoder.decode(request.getParameter("name") ...