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. 【转】移动前端开发之viewport的深入理解

    原文链接:https://blog.csdn.net/u012402190/article/details/70172371 笔记 (20180919,目前暂且只看一部分)

  2. 读书笔记二、ndarray的数据类型

    dtype(数据类型)是一个特殊的对象,它含有ndarray将一块内存解释为特定数据类型所需的信息: import numpy as np arr1=np.array([1,2,3],dtype=np ...

  3. PHP算法之有效的括号

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字符串可被认为是 ...

  4. Echart中X轴数据过多时横向拉动展示

    chart.setOption( { tooltip: { trigger: 'axis' }, toolbox: { feature: { saveAsImage: {} } }, grid: { ...

  5. vue app外卖(5) 使用swiper 进行图片轮播

    1.查看swiper 文档 https://www.swiper.com.cn/usage/index.html 2. 下载 npm install --save swiper 3.在页面引入 imp ...

  6. javascript--判断语句

    1.if...else.. if(m===1){ console.log('1') }else{ console.log('X') } 一般if 里面采用类型全等的运算符. 2.switch var ...

  7. 扩展欧几里得原理的应用:POJ1061青蛙的约会

    /* POJ 1061: 青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 123709 Accepted: 26395 ...

  8. Apache 环境变量配置

    在path 中加入  C:\__S_D_K__\AndroidApache\apache-ant-1.9.14\bin 我的路径在C盘

  9. NX二次开发-time.h获取计算机本地时间

    NX9+VS2012 #include <stdio.h> #include <time.h> char *wday[] = { "Sun", " ...

  10. Python的变长参数

    Python的变长参数 def foo1(*args): for arg in args: print arg def foo2(**kargs): for key in kargs: print k ...