Android开发&send email
2015-11-05 21:42
387 查看
Android接收和发送邮件是通过邮局协议(pop3)和简单邮件传输协议(smtp)实现的。
简单的说:发送邮件时是先将邮件附加内容,发送地址,接收地址信息发送到指定的邮箱服务器(smtp服务器),然后smtp服务器会根据指定的接收地址寻求接收端smtp服务器,最后通过pop3协议从smtp服务器上获取邮件。
~~~图片来源百度
1.通过安卓内置的Gmail程序来发送邮件。
2. 引入mail等包,不通过Gmail直接发送邮件。
qq邮箱服务器经常出问题,不建议使用;
emai等包可百度下载
Email包 点击下载
Intent.type属性与MIME类型 对照表
链接与图片均为他人作品,转载请说明
简单的说:发送邮件时是先将邮件附加内容,发送地址,接收地址信息发送到指定的邮箱服务器(smtp服务器),然后smtp服务器会根据指定的接收地址寻求接收端smtp服务器,最后通过pop3协议从smtp服务器上获取邮件。
~~~图片来源百度
1.通过安卓内置的Gmail程序来发送邮件。
Intent intent=new Intent(Intent.ACTION_SEND); //隐式调用Intent:“android.intent.action.SEND"; //“android.intent.action.SEND_TO"表示发送无附件的邮件。 //“android.intent.action.SEND_MULTIPLE"表示发送复杂大量附件的邮件 intent.setType("application/stream"); //设置邮件属性,系统会自动根据上传的内容进行推导,可以不设置。 intent.putExtra(Intent.EXTRA_EMAIL,emailReceiver.getText().toString()); //设置收件人 intent.putExtra(Intent.EXTRA_SUBJECT,subject.getText().toString()); //设置邮件主题 intent.putExtra(Intent.EXTRA_TEXT,emailText.getText().toString()); //设置邮件内容 intent.putExtra(Intent.EXTRA_BCC,emailSend.getText().toString()); //设置密送人(对方看不到密送人) intent.putExtra(Intent.EXTRA_CC,emailSend.getText().toString()); //设置抄送人 email.putExtra(Intent.EXTRA_STREAM, uri); //添加附件,uri表示具体文件uri。 startActivity(Intent.createChooser(intent, "choose the application")); //createChooser相当于设定选择应用程序的标题,因为这个功能需要借助其他的应用实现。
2. 引入mail等包,不通过Gmail直接发送邮件。
new Thread(new Runnable() { @Override public void run() { try { HtmlEmail htmlEmail=new HtmlEmail(); htmlEmail.setHostName("smtp.139.com"); //设置使用的smtp服务器 htmlEmail.setTLS(true); htmlEmail.setSSL(true); //允许TLS(安全套接层)和SSl(传输层安全)协议 htmlEmail.setCharset("gbk"); //设置邮件编码方式 MimeMultipart multipart=new MimeMultipart(); MimeBodyPart bodyPart=new MimeBodyPart(); String file="文件路径"; if(!TextUtils.isEmpty(file)){ try { bodyPart.attachFile(file); multipart.addBodyPart(bodyPart); htmlEmail.addPart(multipart); } catch (IOException e) { ;//处理文件路径错误。 } } htmlEmail.setSubject(subject); htmlEmail.addTo(emailReceiver); htmlEmail.setFrom("发送人邮箱"); htmlEmail.setAuthentication("XXX@139.com", "XXX"); //连接发送端服务器,第一个参数是邮箱地址,第二个为邮箱密码 htmlEmail.setMsg("邮件内容XXX"); htmlEmail.send(); Message m=new Message(); m.what=2; handler.sendMessage(m); } catch (Exception e) { Message m=new Message(); m.what=1; m.obj=e.toString(); handler.sendMessage(m); //把message交给主线程操作。 } } }).start(); //发送邮件最好开启新线程,避免线程阻塞 //本实例只供参考,代码并不能直接运行
qq邮箱服务器经常出问题,不建议使用;
emai等包可百度下载
Email包 点击下载
Intent.type属性与MIME类型 对照表
链接与图片均为他人作品,转载请说明
相关文章推荐
- Android第三方服务(1):语音识别(1)
- 必懂java、android知识
- Android状态栏提醒——Notification
- Android电量监控
- 使用高德地图API开发定位插件
- Android读取通讯录联系人
- 【Android】多图选择器(支持图片预览 高效加载不怕OOM)
- Android学习笔记之Intent穿梭于各个Activity之间
- android studio中更改文件名
- Android学习札记52:广播(Broadcast)基础篇
- 【Android工具】apktool反编译
- Android 控件 —— Navigation Drawer(导航抽屉)模式
- 从驱动层分析android的Binder机制
- 从驱动层分析android的Binder机制-android学习之旅(83)
- 从驱动层分析android的Binder机制-android学习之旅(83)
- 从驱动层分析android的Binder机制-android学习之旅(83)
- Android Studio 自定义属性
- intellij idea下搭建android环境遇到的rendering problem问题及部分解决方式
- 通过onActivityResult()先跳转到联系人界面,然后把传回来的手机号显示到应用的EditText上
- Android开发实践:Java层与Jni层的数组传递