所需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. HashMap实现原理

    学习笔记之HashMap篇,简单学习了解HashMap的实现原理和扩容. 大家都知道HashMap处理数据很快,时间复杂度O(1),那么是怎么做到的呢?那就先了解一下常见数据结构. 一般来说,我们把存 ...

  2. Linq常用List操作总结,ForEach、分页、交并集、去重、SelectMany等

    /* 以下围绕Person类实现,Person类只有Name和Age两个属性 一.List<T>排序 1.1 List<T>提供了很多排序方法,sort(),Orderby() ...

  3. 将 C# 枚举反序列化为 JSON 字符串 实践

    一.定义枚举 public enum SiteTypeEnum { 中转部 = 1, 网点 = 2 } 还有 BooleanEnum 和 OptTypeEnum 这两个枚举,这里暂且省略了它们的定义. ...

  4. 【计算机网络基础】数据交换技术和多路复用技术的正(nao)确(can)打开方式

    交换的作用   数据交换是计算机网络中两个终端进行数据传输的方式,它又可以分成两种类型:电路交换和分组交换.很显然,问题的核心在于“交换”,那么我们首先要思考的是:交换的作用是什么?   “交换”的作 ...

  5. C语言 实现base64

    #include <stdio.h> const char base[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw ...

  6. git镜像仓库

    有时候我们会把一些仓库放到本地,当他更新的时候,可以使用简单命名更新他. 不是所有时间我们都有网,所以把远程的仓库作为镜像,可以方便我们查看 普通的git clone不能下载所有分支,想要简单的git ...

  7. nodejs项目管理之supervisor||pm2||forever

    supervisor 是开发环境用. forever 管理多个站点,每个站访问量不大,不需要监控. pm2 网站访问量比较大,需要完整的监控界面. supervisor 特点: 代码修改,实时重启 安 ...

  8. (MariaDB)MySQL数据类型详解和存储机制

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  9. Linux系统查找

    1. which:在当前用户环境变量path指定的路径下查找可执行程序/文件. 特点:(1)只在当前用户环境变量指定的路径下查找: (2)只找出可执行程序/文件的位置: (3)查找速度非常快. 注:使 ...

  10. Java基础笔记11

    异常: 即java程序在运行时出现的意外情况.  java如何处理异常. try{ //可能发生异常的地方 }catch(异常类型 对象){  //异常处理处 }catch(异常类型 对象){ }.. ...