所需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. c# datetime与 timeStamp(unix时间戳) 互相转换

    /// <summary> /// Unix时间戳转为C#格式时间 /// </summary> /// <param name="timeStamp" ...

  2. javascript中关于this指向问题详解

      前  言 LiuDaP 在前端的学习中,我们必然要用到js,js可以说是前端必不可少的的东西.在学习js的过程中,我们会经常用到this这个东西,而this的指向问题就变得尤为重要.今天正好有空闲 ...

  3. 【转载】jQuery动画中的queue()函数

    原文链接:http://www.cnblogs.com/hh54188/archive/2011/04/09/1996469.html 原文摘要:当你使用一系列的动画效果(如hide,show),这些 ...

  4. mysql登录出现1045错误修改方法

    在cmd中输入mysql -uroot -p出现1045错误如下: ERROR 1045(28000): Access denied for user 'root'@'localhost'(using ...

  5. JIRA-6.3.6安装与破解

    首先下载JIRA-6.3.6的安装包: wget http://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-6.3. ...

  6. win10 uwp 如何拖动一个TextBlock的文字到另一个TextBlock

    我在堆栈网看到有人问 如何拖动一个TextBlock的文字到另一个TextBlock 于是看到一个大神给出的方法,下面我就来和大家说下如何拖动 一开始我们需要一个界面,就放两个TextBlock 一个 ...

  7. socket__服务端、客户端(注释版)

    # !/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/8/22 16:14 # @Author : Mr_zhang # @Sit ...

  8. C#实现软件开机自启动原理与代码

    1.软件自启动原理 软件自启动的原理要从Windows的注册表聊起,在Windows操作系统下,主要有2个文件夹和8个注册表键项控制程序的自启动,这部分的详细介绍可以参看博客http://www.cn ...

  9. python Logging的使用

    日志是用来记录程序在运行过程中发生的状况,在程序开发过程中添加日志模块能够帮助我们了解程序运行过程中发生了哪些事件,这些事件也有轻重之分. 根据事件的轻重可分为以下几个级别: DEBUG: 详细信息, ...

  10. linux 生成随机密码和wordlist常用方法

    注:文章内容来自网络收集 关于下面这10个方法,估计很多人也知道了,这里也是为了自己以后用收集一下,不过顺便吐槽下,google第一页,只要是“linux 随机密码”这几个类似的关键字,蹦出来的全特么 ...