Android 发邮件ZZ


在android里进行邮件客户端开发可以有两种方式:

在邮件客户端的设计中,可以采用两种方法。

l 一种是调用android系统自带的邮件服务

优点:这种方法比较简单易用

缺点:发送邮件的账号必须是gmail账号

l 令一种方法是采用javamail功能包

优点:可以设置邮件服务器地址,不必局限于gmail邮箱

缺点:用法比较复杂

下面依次介绍这两种方式:

先看应用android自带邮件系统的关键代码


1.//建立Intent对象 
2.Intent intent = new Intent(); 
3.//设置对象动作 
4.intent.setAction(Intent.ACTION_SEND); 
5.//设置对方邮件地址 
6.intent.putExtra(Intent.EXTRA_EMAIL, newString[]     
7.{ "abc@com.cn","edf@com.cn"});   
8.//设置标题内容 
9.intent.putExtra(Intent.EXTRA_SUBJECT,"test"); 
10.//设置邮件文本内容 
11.intent.putExtra(Intent.EXTRA_TEXT, "testmail"); 
12.启动一个新的ACTIVITY,"Sendingmail..."是在启动这个   
13. ACTIVITY的等待时间时所显示的文字 
14.startActivity(Intent.createChooser(intent,"Sending     
15.mail..."));                 

只有上面的代码有可能还会出现异常,你运行的时候会提示一个错误:no application can perform thisaction会有这个错误提示,是由于你没有在模拟器上配置gmail邮箱,输入自己的gmail账号和密码,默认使用的是你的gmail账号发信。


使用javamail实现的代码

在android里使用javamail需要依赖3个包,activation.jar,additionnal.jar,mail.jar
同时还要注意一个最重要的地方那就是开启你访问互联网的权限不然你一点用没有。。。。


   


对于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的子类,并重载      getPasswordAuthenticatio n()方法,代码如下:

        class PopupAuthenticator extends Authenticator {

                    public PasswordAuthentication getPasswordAuthenticatio n() {

                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", "GeorgeBush");

//收件人地址

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 {

      publicPasswordAuthentication getPasswordAuthenticatio n() {

              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("cqhcp@126.com", "GeorgeBush");

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 (AuthenticationFailedExce ption ae){ 
                                  ae.printStackTrace(); 
                                  DisplayToast("用户名或者密码错误!");//其中DisplayToast是我自己写的一个Toast
 
                    } catch (MessagingException mex) { 
                                  mex.printStackTrace(); 
                                  Exception ex = null; 
                                  if ((ex = mex.getNextException()) != null){ 
                                          ex.printStackTrace(); 
                                           
                   

 

以下几篇文章有更加完整的实现,非常好,可以参考。

 

http://www.javaeye.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



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yddido/archive/2011/03/16/6254196.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用的内容,这段引用中包含了一些Vue.js代码和HTML代码,并讨论了换行符和空格在网页中的使用。其中,引用是关于添加和还原换行符的方法,引用是关于在编辑数据时获取详情和使用textarea的示例代码,引用是关于HTML中空格的处理和字符实体的使用。 问题中提到的&nbsp;是HTML中表示空格的字符实体。HTML通常会自动截取多余的空格,不管你加多少空格,都被看做一个空格。为了在网页中增加空格,可以使用&nbsp;表示空格。此外,还有其他常用的字符实体,如<表示小于号,>表示大于号,&表示&符号,"表示双引号,等等。 需要注意的是,引用的内容中有一些HTML实体被转义了,所以在描述字符实体时需要参考编码转义后的字符。 根据给定的引用内容,我无法直接回答问题,因为问题中的信息不完整。请提供更具体的问题或补充说明,我将尽力为您提供帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [js+v-html+正则表达式去除所有& nbsp和html标签(& nbsp 换行 )](https://blog.csdn.net/xm_w_xm/article/details/91992754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [html&nbsp;&nbsp;特殊字符(转)](https://blog.csdn.net/feiniu5566/article/details/13624619)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值