在android里进行邮件客户端开发可以有两种方式:
在邮件客户端的设计中,可以采用两种方法。
l 一种是调用android系统自带的邮件服务
优点:这种方法比较简单易用
缺点:发送邮件的账号必须是gmail账号
l 令一种方法是采用javamail功能包
优点:可以设置邮件服务器地址,不必局限于gmail邮箱
缺点:用法比较复杂
下面依次介绍这两种方式:
先看应用android自带邮件系统的关键代码
+ expand sourceview plaincopy to clipboardprint?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
只有上面的代码有可能还会出现异常,你运行的时候会提示一个错误:no application can perform this action会有这个错误提示,是由于你没有在模拟器上配置gmail邮箱,输入自己的gmail账号和密码,默认使用的是你的gmail账号发信。
使用javamail实现的代码
在android里使用javamail需要依赖3个包,activation.jar,additionnal.jar,mail.jar
同时还要注意一个最重要的地方那就是开启你访问互联网的权限不然你一点用没有。。。。
+ expand sourceview plaincopy to clipboardprint?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
对于JavaMail,最基础的功能就是邮件的发送和接收,在这里,我先讲一讲邮件的发送。
在写具体的程序前,先讲一些概念。1.邮件的发送:如果你的邮件地址是a@host.com,而你要用这个邮箱发送一封邮件到to@tohost.com,这个发送过程是怎样的呢,你以为是先连接到tohost.com这服务器上,然后把邮件发送出去吗?其实不然。最初,你需要连接到服务器host.com上,当然这个连接可能需要认证,然后是发送邮件到服务器host.com上,关闭连接。在host.com上,你所发送的邮件进入发送队列中,轮到你要发送的邮件时,host.com主机再联系tohost.com,将邮件传输到服务器tohost.com上。2.一些垃圾邮件的发送:在垃圾邮件中,可能大部分的发件人的地址都是假的,这是怎么回事呢?实际上在发送这些垃圾邮件的时候,这里的host.com有些特别,可能host.com不需要对用户进行认证,也可能发送垃圾邮件的人本来就控制着服务器host.com,然后控制着host.com向其他服务器,如tohost.com,发送邮件,而发送邮件的内容可以被控制,发件人的地址就可以随便填写。
发送邮件主要包括3个部分:创建连接,创建邮件体,发送邮件
JavaMail中,是使用会话(Session)来管理连接的。创建一个连接,就需要创建一个会话。在会话中,有两个重要的因素,一是会话的属性,二是会话的认证。在我们使用Hotmail等邮件工具的时候,就要设置”SMTP服务器身份验证”,也就是这里的会话的认证。
首先,创建一个连接属性。
Properties props = new Properties();
props.put("mail.smtp.host","smtp.126.com"); //设置smtp的服务器地址是smtp.126.com
props.put("mail.smtp.auth","true"); //设置smtp服务器要身份验证。
在创建一个身份验证。身份验证稍微复杂一点,要创建一个Authenticator的子类,并重载 getPasswordAuthentication()方法,代码如下:
class PopupAuthenticator extends Authenticator {
public PasswordAuthentication getPasswordAuthentication() {
String username = "cqhcp"; //126邮箱登录帐号
String pwd = "12345"; //登录密码
return new PasswordAuthentication(username, pwd);
}
}
创建身份验证的实例:
PopupAuthenticator auth = new PopupAuthenticator();
创建会话: 关于会话的创建,有两种方法,具体请参看后续的文章,这里只简单使用一种。
Session session = Session.getInstance(props, auth);
定义邮件地址:
//发送人地址
Address addressFrom = new InternetAddress("cqhcp@126.com", "George Bush");
//收件人地址
Address addressTo = new InternetAddress("webmaster@javazy.com", "George Bush");
//抄送地址
Address addressCopy = new InternetAddress("haocongping@gmail.com", "George Bush");
创建邮件体:
message.setContent("Hello", "text/plain");//或者使用message.setText("Hello");更详细的信息请参看后续文章.
message.setSubject("Title");
message.setFrom(addressFrom);
message.addRecipient(Message.RecipientType.TO,addressTo);
message.addRecipient(Message.RecipientType.CC,addressCopy);
message.saveChanges();
发送邮件的过程:
Transport transport = session.getTransport("smtp");//创建连接
transport.connect("smtp.126.com", "cqhcp", "12345");//连接服务器
transport.send(message);//发送信息
transport.close();//关闭连接
整体程序的代码如下:
class PopupAuthenticator extends Authenticator {
public PasswordAuthentication getPasswordAuthentication() {
String username = "cqhcp"; //163邮箱登录帐号
String pwd = "12345"; //登录密码
return new PasswordAuthentication(username, pwd);
}
}
Properties props = new Properties();
props.put("mail.smtp.host","smtp.126.com");
props.put("mail.smtp.auth","true");
PopupAuthenticator auth = new PopupAuthenticator();
Session session = Session.getInstance(props, auth);
MimeMessage message = new MimeMessage(session);
Address addressFrom = new InternetAddress([size=large]"cqhcp@126.com", "George Bush");
Address addressTo = new InternetAddress("webmaster@javazy.com", "George Bush");
Address addressCopy = new InternetAddress("haocongping@gmail.com", "George Bush");
message.setContent("Hello", "text/plain");//或者使用message.setText("Hello");
message.setSubject("Title");
message.setFrom(addressFrom);
message.addRecipient(Message.RecipientType.TO,addressTo);
message.addRecipient(Message.RecipientType.CC,addressCopy);
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect("smtp.126.com", "cqhcp", "12345");
transport.send(message);
transport.close();
若想在登录时判断输入的用户名和密码是否正确,正确时登录,不正确时提示出错而不登录,只需像下面这样实现:
try {
session.setDebug(true);
Transport trans = session.getTransport("smtp");
trans.connect("smtp.126.com",account, password);
} catch (AuthenticationFailedException ae) {
ae.printStackTrace();
DisplayToast("用户名或者密码错误!");//其中DisplayToast是我自己写的一个Toast
} catch (MessagingException mex) {
mex.printStackTrace();
Exception ex = null;
if ((ex = mex.getNextException()) != null) {
ex.printStackTrace();
}
}
以下几篇文章有更加完整的实现,非常好,可以参考。
http://www.iteye.com/topic/352753
http://www.cnblogs.com/love2009/archive/2009/02/24/1397201.html
http://www.blogjava.net/TrampEagle/archive/2006/05/26/48326.html
[/size]
分享到:
相关推荐
下面将详细介绍几种常见的Android邮件发送方式。 1. **使用Intent启动邮件应用** Android系统内置了对邮件应用的支持,可以通过Intent来启动邮件客户端。这种方式简单易用,但缺点是用户必须安装了邮件客户端应用...
本项目"Android邮件客户端Demo"提供了一个全面的解决方案,采用JavaMail框架来实现这一功能。JavaMail是Java编程语言中的一个开源库,用于处理邮件相关的API,包括SMTP、POP3和IMAP等协议。 1. **JavaMail框架**:...
首先,我们要了解Android邮件客户端的基本架构。通常,一个邮件客户端会包含以下几个主要部分: 1. 用户界面:用于输入和显示邮件信息,包括登录界面、邮箱选择、收件箱、草稿箱、发件箱、垃圾箱等视图。 2. 邮件...
总的来说,构建一个支持多邮件服务的Android邮件发送客户端涉及了对JavaMail API的使用、SMTP服务器的配置以及用户界面的设计。通过这些步骤,我们可以为用户提供一个方便、安全且跨平台的邮件发送解决方案。
这里提到的"android邮件所需Jar包"正是针对这个需求的一组关键库。以下是这些JAR包的详细解释: 1. **bcprov-jdk15on-154.jar**:这是Bouncy Castle提供的一个加密库,主要提供了各种加密算法,如RSA、AES等。在...
【Android邮件客户端】是一款基于Android平台的个人毕业设计项目,主要功能是实现用户收发电子邮件。这个项目在2014年完成,虽然随着时间的推移,某些技术可能已过时,但作为学习资料,仍然对初学者具有一定的参考...
【基于Android邮件系统】是一种专为Android平台设计的移动邮件应用程序,它允许用户在智能手机上方便地接收和发送电子邮件。这种系统充分利用了Android操作系统的优势,提供了便捷、高效的邮件管理功能,让用户可以...
通过上述各个方面的理解和实现,一个全面的Android邮件系统才能为用户提供无缝的通信体验。开发者需要具备扎实的网络编程、UI设计和数据管理能力,同时不断适应Android平台的新特性与最佳实践。
这个"android邮件发送demo"就是针对这一功能的一个示例代码,可以帮助开发者理解并实现通过Android应用发送邮件的功能。在这个项目中,我们将探讨如何使用JavaMail API以及Android的Intent机制来完成邮件的发送。 ...
"android邮件资料DEMO"就是一个专门针对这个需求提供的示例项目。这个DEMO旨在帮助开发者理解和实现Android应用中的邮件发送功能,通过实例化和配置`Android`的`Intent`系统服务来完成这一任务。 首先,Android中的...
《深入解析Android邮件程序K-9 Mail源代码》 在Android平台上,K-9 Mail是一款开源的、功能强大的电子邮件客户端,深受开发者和高级用户喜爱。它以其高效、可定制和强大的邮件管理特性著称。本文将围绕“android...
"android邮件三件套:mail.jar"是一个关键组件,它为Android应用提供了一个接口,使得应用程序能够与邮件服务器进行通信,从而发送邮件。这个组件包括了`mail.jar`、`activation.jar`和`additionnal.jar`这三个核心...
在提供的标题和描述中提到了四个关键的JAR文件,它们是实现Android邮件发送功能的关键组件: 1. **activation.jar**:这是JavaBeans Activation Framework (JAF) 的一部分,用于识别和操作不同类型的MIME数据类型。...
在本案例中,"Android邮件发送依赖jar包三件套"是指三个关键的Java类库:mail.jar、activation.jar和additionnal.jar,它们是实现邮件发送功能的基础。 1. **mail.jar**:这是JavaMail API的核心库,它提供了邮件...
在IT行业中,Java和Android平台的邮件开发是一项常见的任务,特别是在构建企业级应用或服务时。邮件功能可以用于发送通知、验证用户账户、提供客户服务等。在这个场景中,`activation.jar`、`additionnal.jar` 和 `...
在Android平台上实现邮件收发是一项常见的任务,尤其在毕业设计中,这可以帮助学生掌握网络通信、数据缓存和用户界面交互等关键...通过这个项目,学生能够全面了解Android邮件收发的流程,并锻炼实际解决问题的能力。
以下是关于Android邮件发送的一些关键知识点: 1. **JavaMail API**:JavaMail API是Java平台上的一个开源库,用于处理邮件相关的任务,包括发送、接收邮件。它提供了一系列接口和类,如`Session`、`Message`、`...
首先,我们需要了解Android邮件发送的基本原理。Android系统提供了JavaMail API的封装,我们可以通过Intent服务来调用系统内置的邮件客户端完成邮件的发送。这个过程主要包括以下几个步骤: 1. 创建邮件内容:邮件...
在Android开发中,由于Android平台并不直接支持JavaMail API,所以开发者通常需要将这些jar包转换为Android兼容的aar或者依赖于第三方的Android邮件库(如Android KTX或AndroidX库的实现)。以下是一般的集成步骤: ...
首先,理解“Android邮件收集崩溃日志”是指在Android应用出现异常时,程序能够自动捕获崩溃信息,并通过邮件的形式发送给开发者。这有助于快速定位和解决运行时错误,提高应用的稳定性。 一、崩溃日志的生成与保存...