使用JavaMail发送带附件的邮件
所需jar包
链接:http://pan.baidu.com/s/1dFo4cDz 密码:akap
工具类:
package com.javamail.utils;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
@SuppressWarnings("unused")
public class MailUtils {
private String host = ""; // smtp服务器
private String from = ""; // 发件人地址
private String to = ""; // 收件人地址
private String affix = ""; // 附件地址
private String affixName = ""; // 附件名称
private String user = ""; // 用户名
private String pwd = ""; // 密码
private String subject = ""; // 邮件标题
private String content = ""; // 邮件正文
/**
* 设置发件人,收件人地址及邮件标题
* @param from
* @param to
* @param subject
*/
public void setAddress(String from, String to, String subject) {
this.from = from;
this.to = to;
this.subject = subject;
}
/**
* 设置附件
* @param affix
* @param affixName
*/
public void setAffix(String affix, String affixName) {
this.affix = affix;
this.affixName = affixName;
}
/**
* 发送邮件
* @param host smtp服务器
* @param user 账号
* @param pwd 密码
*/
public void sendEmail(String host, final String user, final String pwd) throws Exception {
this.host = host;
this.user = user;
this.pwd = pwd;
// 1.创建连接对象,连接到邮箱服务器
Properties pt = new Properties();
// 1.1设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
pt.put("mail.smtp.host", host);
// 1.2需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)
pt.put("mail.smtp.auth", "true");
Session session = Session.getInstance(pt, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, pwd);
}
});
// 2.创建邮件对象
Message message = new MimeMessage(session);
// 2.1设置发件人
message.setFrom(new InternetAddress(user));
// 2.2设置收件人
message.setRecipient(RecipientType.TO, new InternetAddress(to));
// 2.3设置主题
message.setSubject(subject);
// 2.4向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
Multipart mp = new MimeMultipart();
// 2.4.1设置邮件文本内容
BodyPart bpContent = new MimeBodyPart();
bpContent.setText(content);
mp.addBodyPart(bpContent);
// 2.4.2添加附件
BodyPart bpAffix = new MimeBodyPart();
DataSource ds = new FileDataSource(affix);
// 2.4.2.1添加附件内容
bpAffix.setDataHandler(new DataHandler(ds));
// 2.4.2.2添加附件的标题 注:这里是通过Base64编码转换,可以保证你的中文附件标题名在发送时不会变成乱码
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
bpAffix.setFileName("=?GBK?B?"
+ enc.encode(affixName.getBytes()) + "?=");
mp.addBodyPart(bpAffix);
// 2.4.3将multipart对象放到message中
message.setContent(mp);
// 2.4.4保存邮件
message.saveChanges();
// 3.发送邮件
Transport.send(message);
}
}
测试:
package com.javamail.test;
import com.javamail.utils.MailUtils;
public class Client {
public static void main(String[] args) throws Exception{
MailUtils mu = new MailUtils();
// 设置发件人地址、收件人地址和邮件标题
mu.setAddress("发件人地址", "收件人地址", "使用JavaMail发送一个带附件的邮件");
// 设置要发送附件的位置和附件标题
mu.setAffix("E:/Javaweb/other/images/04.jpg", "04.jpg");
/**
* 设置smtp服务器以及邮箱的帐号和密码
* 使用QQ 邮箱作为发件人不好使(暂未找到解决方案)
* 163 126邮箱可以,但是必须开启 POP3/SMTP服务
* 因为程序属于第三方登录,所以登录密码必须使用163的授权码
*/
mu.sendEmail("smtp.163.com", "邮箱用户名", "邮箱授权码");//注:授权码和你平时登录的密码是不一样的
}
}
收到邮件:

使用JavaMail发送带附件的邮件的更多相关文章
- 【Mail】JavaMail发送带附件的邮件(二)
上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入 ...
- (转)用javamail发送带附件的邮件
本文转载自:http://redleaf.iteye.com/blog/78217 mail.java 代码 package mail; import java.util.* ; import jav ...
- [SpringBoot] - 发送带附件的邮件
<!--发送email依赖--> <dependency> <groupId>org.springframework.boot</groupId> &l ...
- java发送带附件的邮件
/** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...
- C#发送带附件的邮件的代码
如下的代码是关于C#发送带附件的邮件的代码. MailMessage m = new MailMessage();m.Subject = "File attachment!";m. ...
- 利用Python+163邮箱授权码发送带附件的邮件
背景 前段时间写了个自动爬虫的脚本,定时在阿里云服务器上执行,会从某个网站上爬取链接保存到txt文本中,但是脚本不够完善,我需要爬虫完毕之后通过邮件把附件给我发送过来,之前写过一个<利用Pyth ...
- 接口测试基础——第2篇smtplib发送带附件的邮件
我先给大家补充一个用QQ发送纯文本电子邮件的代码,用QQ的朋友可以参考一下: # coding=utf-8 import smtplib from email.mime.text import MIM ...
- spring boot:发送带附件的邮件和html内容的邮件(以163.com邮箱为例/spring boot 2.3.2)
一,网站哪些情况下需要发送电子邮件? 作为一个电商网站,以下情况需要发邮件通知用户: 注册成功的信息 用邮箱接收验证码 找回密码时发链接 发送推广邮件 下单成功后的订单通知 给商户的对账单邮件 说明: ...
- python 发送带附件的邮件
特别注意的地方:filespart.add_header("Content-Disposition","attachment",filename=file_na ...
随机推荐
- Echarts数据可视化parallel平行坐标系,开发全解+完美注释
全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...
- elasticsearch单例模式连接
import java.net.InetAddress;import org.elasticsearch.client.transport.TransportClient;import org.ela ...
- 【学习】js学习笔记:对象的一些基础知识
1.创建对象 //构造函数方法 function fun1(){} var obj=new fun1(); //Object方法,O要大写 var obj1=new Object(); //json方 ...
- [js高手之路]html5 canvas动画教程 - 下雪效果
利用canvas,实现一个下雪的效果,我们先预览下效果: 我们先分析下这个效果: 1,随机产生雪花 2,雪花的产生不是同时产生,而是有先后顺序的 3,雪花怎么表示 4,怎么源源不断的下雪 5,雪花有大 ...
- 深入浅出 SpringMVC - 1
前言: 本篇笔记是LZ在之前学习 SpringMVC 框架时所的记录,分两篇分享,此篇为基础篇,包括 SpringMVC 环境在 Eclipse 中的搭建,SpringMVC 的 HelloWorld ...
- 使用Kotlin开发第一个Android应用
直奔主题 第一步:为AndroidStudio安装Kotlin插件 在线安装步骤:File—>Settings—>Plugins—>Install JetBrains plugin… ...
- JavaWeb之Maven配置
Maven和C#的nuget类似,可以通过设置就能引入框架等第三方,方便又省事.Java中使用Maven来管理第三方.今天尝试着配置了一下. 一.JDK的安装 关于JDK的安装可以查看百度经验,设置P ...
- LDAP服务部署
1.安装基本环境 # yum -y install openldap openldap-devel openldap-servers openldap-clients 2.配置LDAP服务端 (1)拷 ...
- Debian 9 中手动设置有线网络
multi-user.target中不使用networkmanager,上网需要手动设置后才可以,进行有线网线的设置: 首先得到网卡名称:ip addr or ls /sys/class/net/,以 ...
- Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) 解决方案
1.命令行用maven编译项目失败,提示 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compi ...