针对发送网络附件的java方法(使用Apache的jar包调用)
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包调用)的更多相关文章
- php中PHPMailer发送带附件的电子邮件方法
摘要: 本文讲的是php中PHPMailer发送带附件的电子邮件方法, .首先到http://phpmailer.worxware.com/ 下载最新版本的程序包 2.下载完成后,找到class.ph ...
- 单个java文件打成可执行jar包
1 概述 使用JDK自带的jar与java将单个java文件打成可执行jar包并运行. 当然也可以使用IDE完成,使用Maven只需要一个简单的package,但是单个文件嘛,没必要这么"凶 ...
- Intellij IDEA下导出Java工程的可运行JAR包
Intellij IDEA下导出Java工程的可运行JAR包 昨天一直向导出一个Java工程的可运行JAR包,然后查阅网上的资料以及自己一遍一遍的尝试,均以失败告终.可以导出JAR包,但是导出的JAR ...
- 【原创】Java基础之简单修改jar包中的class
有时需要修改很多jar(假设这些jar都位于lib目录)中其中一个jar中的某一个类,而且又没有原始代码或ide,这时最简单的方式是: 1 进入lib目录 # cd lib # ls test.jar ...
- Java项目生成可执行jar包、exe文件以及在Windows下的安装文件
1.如何通过eclipse将Java项目生成可执行jar包 首先把在eclipse下的java项目导出jar file 下一步 下一步 下一步 最后点击完成,便生成了可执行的jar文件.可以在刚刚选择 ...
- java eclipse导出可运行jar包(java服务)和导入
java eclipse导出可运行jar包(java服务)和导入 二.导出可运行包步骤: 1.选择要导出的项目: 2.右键项目-单击export: 3.选择导出类型:(Runnable JAR ...
- 多个java文件编译并打成jar包经典方法
首先,多个java文件的编译 find . -type f -name *.java > compilelist (.代表当前路径) javac -cp "$CLASSPATH&quo ...
- Java程序中使用Spire Jar包报java.lang.NoSuchMethodError类型错误的解决方法
Jar包功能概述 使用Spire系列的Jar包可以操作Word.Excel.PPT.PDF.Barcode等格式的文件,分别对应使用的jar包是Spire.Doc for Java.Spire.XLS ...
- 网上下载的 java开源项目 如何 打jar包
目前很多java开源项目(例如qlexpress)只提供了源码,没有提供jar,下面提供maven打jar包的方法. 1.进入qlexpress下载后源代码所在的目录,此目录应包含pom.xml,如下 ...
随机推荐
- elasticsearch 父子文档(十一)
说明 需求 一个产品多个区域销售 每个区域有自己的价格, 方式1冗余行,a 产品分别在 area1 area2 area3区域销售 a产品就会生成3条产品数据 搜索id去重就行了,但是问题就是 聚合 ...
- codeforces750E New Year and Old Subsequence 矩阵dp + 线段树
题目传送门 思路: 先看一个大牛的题解 题解里面对矩阵的构造已经写的很清楚了,其实就是因为在每个字符串都有固定的很多中状态,刚好可以用矩阵来表达,所以$(i,j)$这种状态可以通过两个相邻的矩阵的$m ...
- native 之bitmap 保存坑
之前开发项目的时候遇到几次一键保存二维码,或凭证的需求,但是使用h5 a标签 保存网络图片有些并不支持,于是想到了 使用navite 的bitmap可能会好一些 bitmap js封装后的原生图片对象 ...
- javascript中的select、checkbox
遍历checkbox <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// ...
- Java中获取前一天和后一天时间
今天在开发项目的时候遇到一个问题就是怎么获取当前时间的前一天和后一天,这个实现的逻辑并不复杂,自己要写的话的也不是难事,但是貌似感觉没必要自己写这样的方法,想想Java中的Calendar类应该有这样 ...
- NOIp2018集训test-10-15 (bike day1)
B 君的第一题 求斐波那契数列模n的循环节. 1.暴力bsgs,毕姥爷好像说循环节最大是6*n还是多少的,反之比较小,直接bsgs这题是可以过的.但是我非常蠢重载运算符的时候把相等返回成了小于,然后根 ...
- Linux命令(1):date
查看时间: date "+%Y-%m-%d %H:%M:%S" 参数说明: %n : 下一行 %t : 跳格 %H : 小时(00..23) %I : 小时(01..12) %k ...
- How to SSH Into Your iPhone
First, I will explain what SSH is and why we do it. SSH (Secure Shell) allows you to exchange data b ...
- LeetCode 1108. Defanging an IP Address (IP 地址无效化)
题目标签:String 题目给了我们一组 ip address,让我们把 . 变成 [.],这题可以用replace,但是这样做的话,好像没意义了.所以还是走一下array,具体看code. Java ...
- [转]C# JSON格式的字符串读取到类中
将JSON格式的字符串读取到类中 本例中建立JSON格式的字符串json,将其内容读取到Person类中 运行本代码需要添加引用动态库Newtonsoft.Json 程序代码: using Syste ...