所需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发送带附件的邮件的更多相关文章

  1. 【Mail】JavaMail发送带附件的邮件(二)

    上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入 ...

  2. (转)用javamail发送带附件的邮件

    本文转载自:http://redleaf.iteye.com/blog/78217 mail.java 代码 package mail; import java.util.* ; import jav ...

  3. [SpringBoot] - 发送带附件的邮件

    <!--发送email依赖--> <dependency> <groupId>org.springframework.boot</groupId> &l ...

  4. java发送带附件的邮件

    /** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...

  5. C#发送带附件的邮件的代码

    如下的代码是关于C#发送带附件的邮件的代码. MailMessage m = new MailMessage();m.Subject = "File attachment!";m. ...

  6. 利用Python+163邮箱授权码发送带附件的邮件

    背景 前段时间写了个自动爬虫的脚本,定时在阿里云服务器上执行,会从某个网站上爬取链接保存到txt文本中,但是脚本不够完善,我需要爬虫完毕之后通过邮件把附件给我发送过来,之前写过一个<利用Pyth ...

  7. 接口测试基础——第2篇smtplib发送带附件的邮件

    我先给大家补充一个用QQ发送纯文本电子邮件的代码,用QQ的朋友可以参考一下: # coding=utf-8 import smtplib from email.mime.text import MIM ...

  8. spring boot:发送带附件的邮件和html内容的邮件(以163.com邮箱为例/spring boot 2.3.2)

    一,网站哪些情况下需要发送电子邮件? 作为一个电商网站,以下情况需要发邮件通知用户: 注册成功的信息 用邮箱接收验证码 找回密码时发链接 发送推广邮件 下单成功后的订单通知 给商户的对账单邮件 说明: ...

  9. python 发送带附件的邮件

    特别注意的地方:filespart.add_header("Content-Disposition","attachment",filename=file_na ...

随机推荐

  1. VS2010 c/c++ 本地化 emscripten 配置

    配置环境 1.下载emsdk-1.35.0-full-64bit.exe,有VS2010的话直接安装. 2.安装好之后,打开cmd,# emsdk update # emsdk install lat ...

  2. WiFi万能钥匙4.1.32接口

    做Key4WiFi时提取的接口 部分代码来自于 http://zke1ev3n.me/2016/04/06/WiFi%E4%B8%87%E8%83%BD%E9%92%A5%E5%8C%99%E6%8E ...

  3. JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 1

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703679.html ------------------------------------ ...

  4. Hibernate的一对多查询及去掉重复的对象distinct

    问:sql 中 select * from A left join B on A.id=B.id where A.id=? 如果在Hibernate 中 用HQL 怎么表达呢 ?答:from A le ...

  5. Java基础总结--IO总结1

    1.IO流(数据流)主要应用概述数据来源:存储在设备里面* IO流用来处理设备间数据之间的传输* Java对数据的操作是通过流的方式* Java用于对流的操作的对象都在IO包* 流按照流向分为:输出流 ...

  6. LeetCode 59. Spiral Matrix II (螺旋矩阵之二)

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...

  7. YY表行推荐十块顶级复刻表,一比一开模复刻,外观堪比正品

    随着国内制表工艺的逐渐提升,顶级复刻表的行列里成员越来越多,今天复刻表工厂就总结一下最值得入手的十款顶级复刻表来和大家分享. TOP 10:爱彼 AP15400购买指数★★★ AP15400采用顶级复 ...

  8. .xlsx文件总是默认用2007 Microsoft Office component 打开,且无法更改用EXCEL打开的解决方法

    之前装了OFFICE2003,后来改装了 OFFICE2007,之后XLSX文件双击总是用2007 Microsoft Office component 打开,导致无法打开. 解决方法: 打开注册表R ...

  9. Nodejs MSSQL详细解读

    MSSQL 是Nodejs用于连接Microsoft SQL Server 的插件. 安装方法 npm install mssql 配置Config const config = { user: '. ...

  10. 【Salvation】——登录注册存储数据&验证用户

    写在前面:登录注册功能是在纯Unity3D环境内实现的,用到UGUI绘制界面技术,数据库的部分是后面拓展加进来的,这里数据存储是指存在XML用户文件中. 注册用户名和密码 zc() 用户名和密码登录 ...