1、先要在pom.xml文件中引入对应的jar包

 <!--添加邮件的网络附件 start-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.3.2</version>
</dependency>
<!--添加邮件的网络附件 end-->

2、发送网路哦邮件的方法

import org.apache.commons.mail.*;
import org.apache.commons.mail.resolver.DataSourceCompositeResolver;
import org.apache.commons.mail.resolver.DataSourceFileResolver;
import org.apache.commons.mail.resolver.DataSourceUrlResolver;
 /**
* 为邮件添加附件
* @param email 邮件
* @param urls 附件链接
* @param names 附件名称,最好有后缀名才能预览文件
*/
public void addAttachment(ImageHtmlEmail email, List<String> urls, List<String> names) {
// 保证附件名的长度和链接一一对应
while (urls.size() > names.size()) {
names.add("");
} for (int i = 0; i < urls.size(); i++) {
EmailAttachment attachment = new EmailAttachment();
try {
attachment.setURL(new URL(urls.get(i)));
attachment.setDisposition(EmailAttachment.ATTACHMENT);
// attachment.setDescription("Apache logo");
attachment.setName(names.get(i));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
email.attach(attachment); // 将附件添加到邮件中
} catch (EmailException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
  //添加网络附件
public boolean sendHtmlEmailWithImg(IMailService mailService, String huiyi_id, String toMail, String subject, String content, List<String> urls, List<String> names) throws Exception {
// public boolean sendHtmlEmailWithImg(ExHashMap mail, String huiyi_id, String toMail, String subject, String content, List<String> urls, List<String> names) throws Exception {
//获取发送邮箱
System.setProperty("java.net.preferIPv4Stack", "true");
System.setProperty("mail.smtp.ssl.enable", "true");
ExHashMap mail = getMail(mailService, huiyi_id);
String htmlEmailContent = content;
ImageHtmlEmail email = new ImageHtmlEmail();//用ImageHtmlEmail来发送
email.setSSLOnConnect(true);
email.setDebug(true);//可以看到执行过程的debug信息
email.setCharset("UTF-8");//防止乱码
email.setSSLCheckServerIdentity(true);
email.setSslSmtpPort(mail.getString("port")); // 设定SSL端口
email.setSmtpPort(mail.getInt("port"));
//解析本地图片和网络图片都有的html文件重点就是下面这两行;
//ImageHtmlEmail通过setDataSourceResolver来识别并嵌入图片
//查看DataSourceResolver的继承结构发现有几个好用的子类
DataSourceResolver[] dataSourceResolvers =
new DataSourceResolver[]{new DataSourceFileResolver(),//添加DataSourceFileResolver用于解析本地图片
new DataSourceUrlResolver(new URL("http://"))};//添加DataSourceUrlResolver用于解析网络图片,注意:new URL("http://")
//DataSourceCompositeResolver类可以加入多个DataSourceResolver,
//把需要的DataSourceResolver放到一个数组里传进去就可以了;
email.setDataSourceResolver(new DataSourceCompositeResolver(dataSourceResolvers));
// 邮箱登陆信息
email.setHostName(mail.getString("smtp"));//email.setHostName("smtp.qq.com");
email.addTo(toMail, toMail);//email.addTo("*@qq.com", "Jo");
email.setFrom(mail.getString("username"), mail.getString("username")); //email.setFrom("*@qq.com", "Me"); // 必须和登陆邮箱名一致,否则会报错
email.setAuthenticator(new DefaultAuthenticator(mail.getString("username"), mail.getString("password"))); // 邮箱名和登陆密码
email.setSubject(subject);//email.setSubject("发送一张图片,看看是否可以收到。");
//添加附件
addAttachment(email,urls,names);
email.setHtmlMsg(htmlEmailContent); //如果客户端不去持HTML格式会显示这句话,不过应该很少有不支持HTML格式的客户端了吧
email.setTextMsg("你的邮箱客户端不支持HTML格式邮件");
String res = email.send();
return true;
}
    public static void main(String[] args){
ExHashMap email = new ExHashMap();
email.put("smtp","smtp.263.net");
email.put("port","465");
email.put("username","conference@ciccst.org.cn");
email.put("password","Mail_Sent2017");
List<String> urls = new ArrayList<String>();
urls.add("https://img1.360buyimg.com/imgb/s250x250_jfs/t6391/84/85826224/305484/7812e706/59390161N9b653d78.jpg");
List<String> names = new ArrayList<String>();
names.add("hahaha.jpg"); MailUtil mailUtil = new MailUtil();
try {
mailUtil.sendHtmlEmailWithImg(email, "huiyi_id", "744924365@qq.com", "邮件标题", "邮件内容", urls, names);
}catch (Exception e){
e.printStackTrace();
}
}

针对发送网络附件的java方法(使用Apache的jar包调用)的更多相关文章

  1. php中PHPMailer发送带附件的电子邮件方法

    摘要: 本文讲的是php中PHPMailer发送带附件的电子邮件方法, .首先到http://phpmailer.worxware.com/ 下载最新版本的程序包 2.下载完成后,找到class.ph ...

  2. 单个java文件打成可执行jar包

    1 概述 使用JDK自带的jar与java将单个java文件打成可执行jar包并运行. 当然也可以使用IDE完成,使用Maven只需要一个简单的package,但是单个文件嘛,没必要这么"凶 ...

  3. Intellij IDEA下导出Java工程的可运行JAR包

    Intellij IDEA下导出Java工程的可运行JAR包 昨天一直向导出一个Java工程的可运行JAR包,然后查阅网上的资料以及自己一遍一遍的尝试,均以失败告终.可以导出JAR包,但是导出的JAR ...

  4. 【原创】Java基础之简单修改jar包中的class

    有时需要修改很多jar(假设这些jar都位于lib目录)中其中一个jar中的某一个类,而且又没有原始代码或ide,这时最简单的方式是: 1 进入lib目录 # cd lib # ls test.jar ...

  5. Java项目生成可执行jar包、exe文件以及在Windows下的安装文件

    1.如何通过eclipse将Java项目生成可执行jar包 首先把在eclipse下的java项目导出jar file 下一步 下一步 下一步 最后点击完成,便生成了可执行的jar文件.可以在刚刚选择 ...

  6. java eclipse导出可运行jar包(java服务)和导入

    java   eclipse导出可运行jar包(java服务)和导入 二.导出可运行包步骤: 1.选择要导出的项目:  2.右键项目-单击export:  3.选择导出类型:(Runnable JAR ...

  7. 多个java文件编译并打成jar包经典方法

    首先,多个java文件的编译 find . -type f -name *.java > compilelist (.代表当前路径) javac -cp "$CLASSPATH&quo ...

  8. Java程序中使用Spire Jar包报java.lang.NoSuchMethodError类型错误的解决方法

    Jar包功能概述 使用Spire系列的Jar包可以操作Word.Excel.PPT.PDF.Barcode等格式的文件,分别对应使用的jar包是Spire.Doc for Java.Spire.XLS ...

  9. 网上下载的 java开源项目 如何 打jar包

    目前很多java开源项目(例如qlexpress)只提供了源码,没有提供jar,下面提供maven打jar包的方法. 1.进入qlexpress下载后源代码所在的目录,此目录应包含pom.xml,如下 ...

随机推荐

  1. kernel32 的 GetVersionExA/W

    今天接到一个问题,说Kernel32 模块的 GetVersionEx 获取系统版本不准确, 然后让我查查什么原因, 我当时就想,它不准,就用ntdll的 RtlGetVersion 阿,或者 Rtl ...

  2. UIPageViewController看这篇就够了

    先说初始化 - (UIPageViewController *)PageViewController{ if(!_PageViewController){ //书脊位置,只有在UIPageViewCo ...

  3. 从零开始搭建系统1.1——CentOs安装

    本篇主要是记录安装CentOs的过程,为什么会选择CentOs,没有过多的原因,主要是出于CentOs相对来说安装的人比较多, 以后有问题了方便查资料.本次安装是安装在一台笔记本上,WIN7+Cent ...

  4. java中Class.getMethods()和Class.getDeclaredMethods()的区别

    在java中,可以根据Class类的对象,知道某个类(接口)的一些属性(成员 ,方法,注释,注解)等.由于最近的工作中用到了这些,其中需要在代码中格局反射知道某些类的方法,查看文档的时候,看到了get ...

  5. vue+elementui 中 @keyup 键盘上下左右移动聚焦

    <template> <el-table :data="CreditUnclearOutlineList" border style="width: 1 ...

  6. SQL Server 获取所有库名

    ----1. 获取所有的数据库名----- SELECT NAME FROM MASTER.DBO.SYSDATABASES ORDER BY NAME   -----2. 获取所有的表名------ ...

  7. CF 848E(动态规划+分治NTT)

    传送门: http://codeforces.com/problemset/problem/848/E 题解: 假设0-n一定有一条边,我们得到了一个方案,那么显然是可以旋转得到其他方案的. 记最大的 ...

  8. (转)mysql分区技术2

    转:http://database.51cto.com/art/201002/184392.htm 非整数列分区 任何使用过分区的人应该都遇到过不少问题,特别是面对非整数列分区时,MySQL 5.1只 ...

  9. C++之引用与符号“&”

    一.&的意思: 1.取地址符,这时候它用于数据的前面,比如int a=&b; 2.C++里还使用&作为引用符,如果你确认程序是标准的C而非C++的话,那么可以排除是引用了.引用 ...

  10. Hadoop主要生态系统简介

    Hadoop的起源 Doug Cutting是Hadoop之父 ,起初他开创了一个开源软件Lucene(用Java语言编写,提供了全文检索引擎的架构,与Google类似),Lucene后来面临与Goo ...