---------------------------------------------发邮件------------------------------------------

需要jar包:

  javaMail:mail.jar

  jaf:activation.jar

 public class MailTest {

     /**
* 发送一个正常的邮件--只含文本
* @throws Exception
*/
@Test
public void sendNormal() throws Exception { //1,设置邮箱服务器参数
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp"); // 指定协议
props.put("mail.smtp.host", "localhost"); // 主机
props.put("mail.smtp.port", 25); // 端口
props.put("mail.smtp.auth", "true"); // 用户密码认证
props.put("mail.debug", "true"); // 调试模式 //2,创建邮件会话对象
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user1", "user1");
}
}); MimeMessage message = new MimeMessage(session);
message.setSentDate(new Date());
message.setFrom(new InternetAddress("user1@test.com"));
message.setRecipient(RecipientType.TO, new InternetAddress("user2@test.com"));
message.setSubject("标题");
message.setText("内容"); Transport.send(message); } /**
* 发送带图片的邮件
*
*/
@Test
public void sendPhothMail() throws Exception {
//1,设置邮箱服务器参数
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp"); // 指定协议
props.put("mail.smtp.host", "localhost"); // 主机
props.put("mail.smtp.port", 25); // 端口
props.put("mail.smtp.auth", "true"); // 用户密码认证
// props.put("mail.debug", "true"); // 调试模式 //2,创建邮件会话对象
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user1", "user1");
}
}); //3,邮件信息
MimeMessage message = new MimeMessage(session);
message.setSentDate(new Date());
message.setFrom(new InternetAddress("user1@test.com"));
message.setRecipient(RecipientType.TO, new InternetAddress("user2@test.com"));
message.setSubject("带图片的邮件");
message.setSentDate(new Date());
// message.setText("哈哈"); 当使用Multipart时候,设置文本就无效 /**************1. 邮件设置图片资源********************/
// 1.1 创建负责复杂邮件体
MimeMultipart mul = new MimeMultipart("relassssted");
// 邮件体related = 内容 + 资源
MimeBodyPart content = new MimeBodyPart(); // 内容
MimeBodyPart resource = new MimeBodyPart(); // 资源
// 把内容资源设置到复杂邮件中
mul.addBodyPart(content);
mul.addBodyPart(resource); //---- 设置邮件资源----- File file = new File("f:/1.jpg");
// 设置本地数据资源
resource.setDataHandler(new DataHandler(new FileDataSource(file)));
// 设置网络数据
// resource.setDataHandler(new DataHandler(new URL("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1623986359,132242757&fm=117&gp=0.jpg")));
resource.setContentID("1.jpg"); // 图片资源在邮件中的名称 //---- 设置邮件内容------
content.setContent("<img src='cid:1.jpg' />正文邮件,你看图片!", "text/html;charset=UTF-8"); // 1.2 把复杂邮件,设置到邮件对象中(message)!
message.setContent(mul); message.saveChanges(); // 保存邮件 Transport.send(message); } /**
* 发送带图片和附件的邮件
*/
@Test
public void sendAttachMail() throws Exception {
//1,设置邮箱服务器参数
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp"); // 指定协议
props.put("mail.smtp.host", "localhost"); // 主机
props.put("mail.smtp.port", 25); // 端口
props.put("mail.smtp.auth", "true"); // 用户密码认证
props.put("mail.debug", "true"); // 调试模式 //2,创建邮件会话对象
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user1", "user1");
}
}); MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("user1@test.com"));
message.setRecipient(RecipientType.TO, new InternetAddress("user2@test.com"));
message.setSubject("带图片和附件的邮件:");
message.setSentDate(new Date()); //3.设置复杂邮件格式
MimeMultipart mix = new MimeMultipart();
//3.1附件
MimeBodyPart attach = new MimeBodyPart();
//3.2正文
MimeBodyPart content = new MimeBodyPart();
//3.3附件正文添加到复杂格式中
mix.addBodyPart(attach);
mix.addBodyPart(content); //3.3.1附件内容设置
attach.setDataHandler(new DataHandler(new FileDataSource(zipFile(new File("f:/1.jpg")))));
attach.setFileName(MimeUtility.encodeText("附件.zip")); //3.3.2正文设置
MimeMultipart mul = new MimeMultipart();
MimeBodyPart text = new MimeBodyPart();
MimeBodyPart img = new MimeBodyPart();
mul.addBodyPart(text);
mul.addBodyPart(img);
//图片文本设置
img.setDataHandler(new DataHandler(new FileDataSource(new File("f:/1.jpg"))));
img.setContentID("1.jpg");
text.setContent("<img src='cid:1.jpg' />哈哈附件+文本+图片", "text/html;charset=utf-8");
//正文内容添加到邮件
content.setContent(mul); //复杂邮件格式添加到邮件主体
message.setContent(mix); //4,发送邮件
Transport.send(message);
} /**
* 数据压缩
* @throws IOException
*/
public File zipFile(File file) throws IOException { String tem = "f:/2.zip"; InputStream in = new FileInputStream(file);
GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(new File(tem)));
byte[] buf = new byte[8*1024];
int len = 0;
while ((len = in.read(buf)) != -1) {
out.write(buf, 0, len);
}
in.close();
out.close(); File temFile = new File(tem); return file; } }

JavaMail开发的更多相关文章

  1. JavaMail开发教程01开山篇

    序 其实想写JavaMail这一系列的博客已经有一个月之久了,缘起是某次乱逛传智播客官网浏览到相关的视频教程,想起大学时代学过的计算机网络提到邮件相关的协议,但遗憾的是到目前为止还没有接触计算机网络编 ...

  2. 基于JavaMail开发邮件发送器工具类

    基于JavaMail开发邮件发送器工具类 在开发当中肯定会碰到利用Java调用邮件服务器的服务发送邮件的情况,比如账号激活.找回密码等功能.本人之前也碰到多次这样需求,为此特意将功能封装成一个简单易用 ...

  3. javaEE(17)_邮件原理与JavaMail开发

    一.Java邮件开发介绍 为什么要学习javamail开发 •现在很多WEB应用在开发时都需要集成邮件发送功能,例如: •给新注册的用户自动发送一封包含其注册信息的欢迎E-Mail. •给过生日的注册 ...

  4. 19、文件上传与下载/JavaMail邮件开发

    回顾: 一. 监听器 生命周期监听器 ServletRequestListener HttpSessionListener ServletContextListener 属性监听器 ServletRe ...

  5. JavaMail 邮件开发

    (api  + 配置) 开发中,邮件的应用? -à 注册,填写生日:  后期系统会自动发送生日祝贺   -à 发货,发货提醒!邮件提醒! 邮件: 1. 发邮件:[程序中如何发邮件!] 2. 收邮件:[ ...

  6. 在android开发中如何使用JavaMail程序

    javaMail,是提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Microsoft  ...

  7. JavaMail和James

      JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Micr ...

  8. JavaMail和James的秘密花园

    JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Micros ...

  9. 使用JavaMail发送邮件和接受邮件

    转载:http://blog.csdn.net/zdp072/article/details/30977213 一. 为什么要学习JavaMail 为什么要学习JavaMail开发? 现在很多WEB应 ...

随机推荐

  1. hibernate HQL查询

    hql(都要在事务中完成)session.beginTransaction();session.getTransaction().commit(); session.beginTransaction( ...

  2. UpdatePanel无刷新

    使用UpdatePanel实现无刷新效果 1. <asp:ScriptManager ID="scriptManger1" ruant="server"& ...

  3. shell入门-tr替换字符和split切割大文件

    命令:tr 说明:替换字符 格式tr ‘原字符’ ‘新字符’ 可以是范围字符,指定字符 命令:split 选项:-b 50m 1.txt  根据大小分割 单位是b不用单位,单位是兆加m -l 100 ...

  4. 利用Ssocks访问国外网站(yutube/google等)

    ***开源项目:https://github.com/***/ 本例使用的是针对windows系统的c-sharp版本:https://github.com/***/***-windows 运行*** ...

  5. mysql--二进制日志(bin-log)

    一.设置二进制日志 进制日志记录了所有的DDL和DML,但不包括各种查询.通过二进制日志,可以实现什么效果呢?二进制日志文件可以[实现灾难数据恢复],另外可以应用到[mysql复制数据同步].二进制日 ...

  6. ubuntu 13.04 安装 JDK

    ubuntu 13.04 安装 JDK 具体步骤参详了如下链接: http://blog.csdn.net/yang_hui1986527/article/details/6677450 1.到 Su ...

  7. Struts2学习第七课 动态方法调用

    动态方法调用:通过url动态调用Action中的方法. action声明: <package name="struts-app2" namespace="/&quo ...

  8. Lucene.net 搜索引擎的中文资料

    以下是我找到的网上一些关于Lucene.net 搜索引擎的介绍资料 https://code.i-harness.com/zh-CN/tagged/lucene?page=5 http://jingp ...

  9. xilinx planahead partial reconfiguration

    1.为什么要使用reconfiguration? reconfiguration,即逻辑可重配,指的是FPGA的逻辑只加载指定区域(功能)的逻辑,而对除此之外的逻辑不产生影响,最常用的就是PCIe/P ...

  10. hdu1088

    #include <stdio.h> #include <string.h> int main() { char s[10000]; int len; int cnt = 0; ...