Android进阶(十)Android 发邮件_android邮件开发涉及技术领域,这么香的技术还不快点学起来

73 阅读5分钟

总结

前端资料汇总

  • 框架原理真的深入某一部分具体的代码和实现方式时,要多注意到细节,不要只能写出一个框架。

  • 算法方面很薄弱的,最好多刷一刷,不然影响你的工资和成功率😯

  • 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

  • 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!! 喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力!

开源分享:docs.qq.com/doc/DSmRnRG…

 

//建立Intent对象  

Intent intent = new Intent();  

//设置对象动作  

intent.setAction(Intent.ACTION_SEND);  

//设置对方邮件地址  

intent.putExtra(Intent.EXTRA_EMAIL, new String[]    

{ "abc@com.cn","edf@com.cn" });   

//设置标题内容  

intent.putExtra(Intent.EXTRA_SUBJECT, "test");  

//设置邮件文本内容  

intent.putExtra(Intent.EXTRA_TEXT, "test mail");  

//启动一个新的ACTIVITY,"Sending mail..."是在启动这个ACTIVITY的等待时间时所显示的文字  

startActivity(Intent.createChooser(intent, "Sending    

mail..."));          

 

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

 

使用javamail实现的代码

 

在android里使用javamail需要依赖3个包,activation.jar,additionnal.jar,mail.jar,在编程中发现,其实additionnal.jar存在与否不影响结果。

同时还要注意一个最重要的地方那就是开启你访问互联网的权限不然你一点用没有。。。。

 

 <uses-permission android:name="android.permission.INTERNET">  

 

对于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();

 

//设置smtp的服务器地址是smtp.126.com

props.put("mail.smtp.host","smtp.126.com");  

 

//设置smtp服务器要身份验证

props.put("mail.smtp.auth","true");          

 

PopupAuthenticator auth = new PopupAuthenticator();

 

// 创建会话(JavaMail中,是使用会话(Session)来管理连接的)

Session session = Session.getInstance(prop, auth);

 

// 创建邮件体

Message message = createmessage(session, user);

 

// 发送邮件-创建连接

Transport ts = null;

 

// 校验客服邮箱

try {

session.setDebug(true);

 

ts = session.getTransport("smtp");

 

// 此处的邮件发送方邮箱密码可知无可厚非

ts.connect(ConstantValue.MAILHOST, ConstantValue.MAILADDRESS,

ConstantValue.MAILPWD);

 

flag = true;

 

} catch (AuthenticationFailedException ae) {

ae.printStackTrace();

flag = false;

System.out.println("客服邮箱名或密码错误,请重新输入");

return SUCCESS;

} catch (MessagingException mex) {

mex.printStackTrace();

Exception ex = null;

if ((ex = mex.getNextException()) != null) {

ex.printStackTrace();

}

flag = false;

System.out.println("客服邮箱名或密码错误,请重新输入");

return SUCCESS;

}

ts.send(message);

ts.close();

 

}

 

其中涉及到创建一个身份验证。身份验证稍微复杂一点,要创建一个Authenticator的子类,并重载getPasswordAuthentication()方法,代码如下:

 

   public class PopupAuthenticator extends Authenticator {

 

public PasswordAuthentication getPasswordAuthentication() {

 

String username = ConstantValue.MAILADDRESS;

 

String pwd = ConstantValue.MAILPWD;

 

return new PasswordAuthentication(username, pwd);

 

}

 

}

其中的类ConstantValue 如下:

public class ConstantValue {

 

//邮件服务器

public static String MAILSENDER = "*秋亚";

 

//邮件服务器

public static String MAILHOST = "smtp.163.com";

 

//发送邮件地址

public static String MAILADDRESS = "sunhuaqiang2014";

 

//发送邮件密码

public static String MAILPWD = "35****";

}

其中涉及到的createmessage()方法如下:

public Message createmessage(Session session, User user)

ES6

  • 列举常用的ES6特性:

  • 箭头函数需要注意哪些地方?

  • let、const、var

  • 拓展:var方式定义的变量有什么样的bug?

  • Set数据结构

  • 拓展:数组去重的方法

  • 箭头函数this的指向。

  • 手写ES6 class继承。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

微信小程序

  • 简单描述一下微信小程序的相关文件类型?

  • 你是怎么封装微信小程序的数据请求?

  • 有哪些参数传值的方法?

  • 你使用过哪些方法,来提高微信小程序的应用速度?

  • 小程序和原生App哪个好?

  • 简述微信小程序原理?

  • 分析微信小程序的优劣势

  • 怎么解决小程序的异步请求问题?