所需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. PPLB条码打印

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  2. 标准输入输出 stdio 流缓冲

    **From : http://www.pixelbeat.org/programming/stdio_buffering/** 我发现找出标准流用的是什么缓冲是一件困难的事. 例如下面这个使用uni ...

  3. canvas图表详解系列(4):动态散点图

    本章建议学习时间4小时 学习方式:详细阅读,并手动实现相关代码(如果没有canvas基础,需要先学习前面的canvas基础笔记) 学习目标:此教程将教会大家如何使用canvas绘制各种图表,详细分解步 ...

  4. PHP常用表达式用法

    1.匹配正整数:/^[1-9]\d*$/ 2.匹配非负整数(正整数+0):/^\d+$/ 3.匹配中文:/^[\x{4e00}-\x{9fa5}]+$/u 4.匹配Email:/^\w+([-+.]\ ...

  5. Coursera_程序设计与算法_计算导论与C语言基础_数组应用练习

    您也可以在我的个人博客中阅读此文章:跳转 编程题#1:求字母的个数 描述 在一个字符串中找出元音字母a,e,i,o,u出现的次数. 输入 输入一行字符串(字符串中可能有空格,请用gets(s)方法把一 ...

  6. oracle 表空间不足解决办法

    问题:在对某一表空间进行新建表的时候,出现ora-01658的错误. create 语句: create table OA_ORGCONFIG(  OAOC_UNID      INTEGER not ...

  7. LeetCode 209. Minimum Size Subarray Sum (最短子数组之和)

    Given an array of n positive integers and a positive integer s, find the minimal length of a contigu ...

  8. jQuery的区别:$().click()和$(document).on('click','要选择的元素',function(){})的不同

    jQuery的出现,大大简化了对dom的操作,但是如果不是仔细阅读api和进行操作,就不知道其中最大的优点和使用方式.就拿$().click()和$(document).on('click','要选择 ...

  9. Web设计新手应知道的10个锦囊妙计

    摘要:你在网页设计所学到的大多数教训都来自工作经验.学习是一个反复持续的过程,并且没有比犯错更好的方式来获得知识.在本文中,我们将讨论10个重要并常规的技巧,这是每位Web设计师新手都应该知道. 在做 ...

  10. net start mongodb 服务名无效解决方案

    net start mongodb 服务名无效 或者 net start mongodb 发生错误5,拒绝访问.是因为没有用管理员权限运行cmd. 解决方案:在window中,在搜索框输入cmd后,在 ...