- 浏览: 2195569 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题不用第三方邮件程序。为了以后使用方便,自己写了段代码
Javamail-Android配置步骤:
我的代码有三个类:
第一个类:MailSenderInfo.java
第二个类:MultiMailsender.java
第三个类:MyAuthenticator.java
最后,给出朋友们几个注意的地方:
Javamail-Android配置步骤:
- 下载Android版本JavaMail包,additional.jar、mail.jar和activation.jar,下载地址JavaMail-Android
- 在项目与src同一目录级别下,新建文件夹lib,将下载的3个jar包放入该文件夹
- 右键->Properties->Java Build Path->Libraries,选择Add External JARs,找到项目下lib目录的3个jar包
我的代码有三个类:
第一个类:MailSenderInfo.java
package com.iaiai.imail.activity.helper; import java.util.Properties; /** * Created with IntelliJ IDEA. * User: 丸子 * Date: 12-5-25 * Time: 16:56:13 * Http: http://iaiai.iteye.com * QQ: 176291935 */ public class MailSenderInfo { // 发送邮件的服务器的IP和端口 private String mailServerHost; private String mailServerPort = "25"; // 邮件发送者的地址 private String fromAddress; // 邮件接收者的地址 private String toAddress; // 登陆邮件发送服务器的用户名和密码 private String userName; private String password; // 是否需要身份验证 private boolean validate = false; // 邮件主题 private String subject; // 邮件的文本内容 private String content; // 邮件附件的文件名 private String[] attachFileNames; /** * 获得邮件会话属性 */ public Properties getProperties() { Properties p = new Properties(); p.put("mail.smtp.host", this.mailServerHost); p.put("mail.smtp.port", this.mailServerPort); p.put("mail.smtp.auth", validate ? "true" : "false"); return p; } public String getMailServerHost() { return mailServerHost; } public void setMailServerHost(String mailServerHost) { this.mailServerHost = mailServerHost; } public String getMailServerPort() { return mailServerPort; } public void setMailServerPort(String mailServerPort) { this.mailServerPort = mailServerPort; } public boolean isValidate() { return validate; } public void setValidate(boolean validate) { this.validate = validate; } public String[] getAttachFileNames() { return attachFileNames; } public void setAttachFileNames(String[] fileNames) { this.attachFileNames = fileNames; } public String getFromAddress() { return fromAddress; } public void setFromAddress(String fromAddress) { this.fromAddress = fromAddress; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getToAddress() { return toAddress; } public void setToAddress(String toAddress) { this.toAddress = toAddress; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { return content; } public void setContent(String textContent) { this.content = textContent; } }
第二个类:MultiMailsender.java
package com.iaiai.imail.activity.helper; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import java.util.Date; import java.util.Properties; /** * Created with IntelliJ IDEA. * User: 丸子 * Date: 12-5-25 * Time: 16:56:13 * Http: http://iaiai.iteye.com * QQ: 176291935 */ public class MultiMailsender { /** * 以文本格式发送邮件 * * @param mailInfo 待发送的邮件的信息 */ public boolean sendTextMail(MultiMailSenderInfo mailInfo) { // 判断是否需要身份认证 MyAuthenticator authenticator = null; Properties pro = mailInfo.getProperties(); if (mailInfo.isValidate()) { // 如果需要身份认证,则创建一个密码验证器 authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); } // 根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session.getDefaultInstance(pro, authenticator); try { // 根据session创建一个邮件消息 Message mailMessage = new MimeMessage(sendMailSession); // 创建邮件发送者地址 Address from = new InternetAddress(mailInfo.getFromAddress()); // 设置邮件消息的发送者 mailMessage.setFrom(from); // 创建邮件的接收者地址,并设置到邮件消息中 Address[] tos = null; String[] receivers = mailInfo.getReceivers(); if (receivers != null) { // 为每个邮件接收者创建一个地址 tos = new InternetAddress[receivers.length + 1]; tos[0] = new InternetAddress(mailInfo.getToAddress()); for (int i = 0; i < receivers.length; i++) { tos[i + 1] = new InternetAddress(receivers[i]); } } else { tos = new InternetAddress[1]; tos[0] = new InternetAddress(mailInfo.getToAddress()); } // Message.RecipientType.TO属性表示接收者的类型为TO mailMessage.setRecipients(Message.RecipientType.TO, tos); // 设置邮件消息的主题 mailMessage.setSubject(mailInfo.getSubject()); // 设置邮件消息发送的时间 mailMessage.setSentDate(new Date()); // 设置邮件消息的主要内容 String mailContent = mailInfo.getContent(); mailMessage.setText(mailContent); // 发送邮件 Transport.send(mailMessage); return true; } catch (MessagingException ex) { ex.printStackTrace(); } return false; } /** * 发送邮件给多个接收者,以Html内容 * * @param mailInfo 带发送邮件的信息 * @return */ public static boolean sendMailtoMultiReceiver(MultiMailSenderInfo mailInfo) { MyAuthenticator authenticator = null; if (mailInfo.isValidate()) { authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); } Session sendMailSession = Session.getInstance(mailInfo .getProperties(), authenticator); try { Message mailMessage = new MimeMessage(sendMailSession); // 创建邮件发送者地址 Address from = new InternetAddress(mailInfo.getFromAddress()); mailMessage.setFrom(from); // 创建邮件的接收者地址,并设置到邮件消息中 Address[] tos = null; String[] receivers = mailInfo.getReceivers(); if (receivers != null) { // 为每个邮件接收者创建一个地址 tos = new InternetAddress[receivers.length + 1]; tos[0] = new InternetAddress(mailInfo.getToAddress()); for (int i = 0; i < receivers.length; i++) { tos[i + 1] = new InternetAddress(receivers[i]); } } else { tos = new InternetAddress[1]; tos[0] = new InternetAddress(mailInfo.getToAddress()); } // 将所有接收者地址都添加到邮件接收者属性中 mailMessage.setRecipients(Message.RecipientType.TO, tos); mailMessage.setSubject(mailInfo.getSubject()); mailMessage.setSentDate(new Date()); // 设置邮件内容 Multipart mainPart = new MimeMultipart(); BodyPart html = new MimeBodyPart(); html.setContent(mailInfo.getContent(), "text/html; charset=GBK"); mainPart.addBodyPart(html); mailMessage.setContent(mainPart); // 发送邮件 Transport.send(mailMessage); return true; } catch (MessagingException ex) { ex.printStackTrace(); } return false; } /** * 发送带抄送的邮件 * * @param mailInfo 待发送邮件的消息 * @return */ public static boolean sendMailtoMultiCC(MultiMailSenderInfo mailInfo) { MyAuthenticator authenticator = null; if (mailInfo.isValidate()) { authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); } Session sendMailSession = Session.getInstance(mailInfo .getProperties(), authenticator); try { Message mailMessage = new MimeMessage(sendMailSession); // 创建邮件发送者地址 Address from = new InternetAddress(mailInfo.getFromAddress()); mailMessage.setFrom(from); // 创建邮件的接收者地址,并设置到邮件消息中 Address to = new InternetAddress(mailInfo.getToAddress()); mailMessage.setRecipient(Message.RecipientType.TO, to); // 获取抄送者信息 String[] ccs = mailInfo.getCcs(); if (ccs != null) { // 为每个邮件接收者创建一个地址 Address[] ccAdresses = new InternetAddress[ccs.length]; for (int i = 0; i < ccs.length; i++) { ccAdresses[i] = new InternetAddress(ccs[i]); } // 将抄送者信息设置到邮件信息中,注意类型为Message.RecipientType.CC mailMessage.setRecipients(Message.RecipientType.CC, ccAdresses); } mailMessage.setSubject(mailInfo.getSubject()); mailMessage.setSentDate(new Date()); // 设置邮件内容 Multipart mainPart = new MimeMultipart(); BodyPart html = new MimeBodyPart(); html.setContent(mailInfo.getContent(), "text/html; charset=GBK"); mainPart.addBodyPart(html); mailMessage.setContent(mainPart); // 发送邮件 Transport.send(mailMessage); return true; } catch (MessagingException ex) { ex.printStackTrace(); } return false; } /** * 发送多接收者类型邮件的基本信息 */ public static class MultiMailSenderInfo extends MailSenderInfo { // 邮件的接收者,可以有多个 private String[] receivers; // 邮件的抄送者,可以有多个 private String[] ccs; public String[] getCcs() { return ccs; } public void setCcs(String[] ccs) { this.ccs = ccs; } public String[] getReceivers() { return receivers; } public void setReceivers(String[] receivers) { this.receivers = receivers; } } }
第三个类:MyAuthenticator.java
package com.iaiai.imail.activity.helper; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; /** * Created with IntelliJ IDEA. * User: 丸子 * Date: 12-5-25 * Time: 16:56:13 * Http: http://iaiai.iteye.com * QQ: 176291935 */ public class MyAuthenticator extends Authenticator { String userName = null; String password = null; public MyAuthenticator() { } public MyAuthenticator(String username, String password) { this.userName = username; this.password = password; } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(userName, password); } }
最后,给出朋友们几个注意的地方:
- 使用此代码你可以完成你的javamail的邮件发送功能、发多个邮箱。三个类缺一不可。
- 这三个类我打包是用的com.iaiai包,如果不喜欢,你可以自己改,但三个类文件必须在同一个包中
- 不要使用你刚刚注册过的邮箱在程序中发邮件,如果你的163邮箱是刚注册不久,那你就不要使用“smtp.163.com”。因为你发不出去。刚注册的邮箱是不会给你这种权限的,也就是你不能通过验证。要使用你经常用的邮箱,而且时间比较长的。
- 另一个问题就是mailInfo.setMailServerHost("smtp.163.com");与mailInfo.setFromAddress("xxx@163.com");这两句话。即如果你使用163smtp服务器,那么发送邮件地址就必须用163的邮箱,如果不的话,是不会发送成功的。
- 关于javamail验证错误的问题,网上的解释有很多,但我看见的只有一个。就是我的第三个类。你只要复制全了代码,我想是不会有问题的。
- 然后在Android项目中添加网络访问权限<uses-permission android:name="android.permission.INTERNET"></uses-permission>
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 626本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
小程序textarea完美填坑
2020-07-07 16:09 519相信做微信小程序的码友们都被textarea这个原生组件坑过 ... -
Nginx+Https自己敲命令生成证书
2020-05-18 09:35 946一、准备 环境:centos6.8 ... -
https证书生成环境搭建配置(基于Tomcat和Nginx)
2020-04-24 11:06 820一、基于Tomcat、JDK内置密钥工具: 1、生成服务端证 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1099颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 989从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1166Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 1003Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 838前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 924监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 799在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 948最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
史上最强Tomcat8性能优化
2019-11-01 21:41 883授人以鱼不如授人以渔 ... -
SpringBoot配置HTTPS,并实现HTTP访问自动转HTTPS访问
2019-10-07 09:13 5601.使用jdk自带的 keytools 创建证书 打开cmd ... -
Spring Boot工程集成全局唯一ID生成器 UidGenerator
2019-09-16 09:04 854概述 流水号生成器(全局唯一 ID生成器)是服务化系统的基础 ... -
CentOS7下Redis的安装与使用
2019-08-17 11:45 605一、手动安装过程 1、准备工作(安装gcc依赖) yum ... -
Nginx与tomcat组合的简单使用
2019-08-17 10:05 429配置tomcat跳转 请求http出现400的时候在这里配置 ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1326##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1112当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 774setstate的时候会一直无限的调用listview.bui ...
相关推荐
使用 JavaMail 代发邮件 使用 JavaMail 库可以轻松地在 Java 应用程序中发送电子邮件。JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件...
在这个资源中,我们将探讨如何使用 JavaMail 实现邮件的发送、接收、查看邮件数量以及未读邮件的标记为已读。 首先,让我们从发送邮件开始。在 JavaMail 中,你需要创建一个 `Session` 对象来配置邮件服务器的连接...
在阅读博文《『JAVA基础』使用JavaMail发邮件的实例》后,你可以进一步了解如何处理更复杂的邮件场景,如HTML格式的邮件、多语言支持以及错误处理等。这个实例不仅提供了源码,还可能包含了一些实用工具,帮助你更好...
需要网讯的webex打开,讲解利用JavaMail发送邮件的开发过程。
JavaMail是一个广泛使用的Java库,用于处理电子邮件的发送和接收。它提供了丰富的API,使得开发者能够在Java应用程序中方便地实现SMTP、POP3和IMAP等邮件协议的功能。本项目是关于如何利用JavaMail API和Spring Boot...
这个例子展示了如何使用JavaMail发送带附件的邮件。需要注意的是,实际应用中应处理各种异常,确保邮件发送的健壮性。此外,如果你的邮件服务器需要身份验证,还需要提供一个Authenticator来处理登录信息。 总的来...
基于Javamail的邮件收发系统.zip基于Javamail的邮件收发系统.zip基于Javamail的邮件收发系统.zip基于Javamail的邮件收发系统.zip基于Javamail的邮件收发系统.zip基于Javamail的邮件收发系统.zip基于Javamail的邮件...
在这个主题“javaMail学习(七)——使用javaMail发复杂邮件”中,我们将深入探讨如何使用 JavaMail API 发送包含多种附件、HTML 内容和其他复杂元素的邮件。在提供的文件列表中,我们看到一系列名为 MailUtils 的类,...
本篇将深入探讨如何使用JavaMail实现发送邮件,以及相关的源码分析。 首先,我们需要了解JavaMail的基本组件。`javax.mail`库主要包含以下关键接口和类: 1. `Session`:这是JavaMail的核心,代表与邮件服务器的...
这涉及到JavaMail API的使用,如`Session`对象用于配置邮件服务器连接参数,`Message`对象代表一封邮件,`Transport`类则负责实际的邮件发送操作。收邮件时,会通过`Store`对象连接到邮件服务器,获取`Folder`并读取...
在本篇文章中,我们将深入探讨如何使用JavaMail API来实现邮件的发送功能。 首先,我们需要引入JavaMail所需的依赖库。在提供的文件列表中,我们看到有以下jar文件: 1. mail.jar:这是JavaMail的核心库,包含了...
本资料包主要涵盖了使用 JavaMail 实现回执邮件以及相关邮件操作的知识点。 首先,发送带有回执请求的邮件是通过设置邮件头实现的。在创建 `MimeMessage` 对象时,可以调用 `setHeader()` 方法添加特定的头字段。...
下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: 1. `javax.mail.Session`:是JavaMail的核心,负责配置邮件服务器的信息,如...
在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...