Android开发&send email

Android接收和发送邮件是通过邮局协议(pop3)和简单邮件传输协议(smtp)实现的。
简单的说:发送邮件时是先将邮件附加内容,发送地址,接收地址信息发送到指定的邮箱服务器(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类型 对照表

链接与图片均为他人作品,转载请说明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值