javamail 发送邮件demo(文字与附件)
package com.get.one;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.*;
import java.util.*;
import javax.activation.*;
public class test7 {
// 发件人的 邮箱 和 密码(替换为自己的邮箱和密码)
public static String myEmailAccount = "***@qq.com";
public static String myEmailPassword = "*******";
public static 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 msg = ""; //邮件内容 public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} public void setAddress(String from, String to, String subject) {
this.from = from;
this.to = to;
this.subject = subject;
} public void setAffix(String affix, String affixName) {
this.affix = affix;
this.affixName = affixName;
} public void send(String host, String user, String pwd) {
this.host = host;
this.user = user;
this.pwd = pwd; Properties props = new Properties(); // 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
props.put("mail.smtp.host", host);
// 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)
props.put("mail.smtp.auth", "true"); // 需要请求认证
props.put("mail.smtp.port", "465");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
// 用刚刚设置好的props对象构建一个session
Session session = Session.getDefaultInstance(props); // 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使
// 用(你可以在控制台(console)上看到发送邮件的过程)
session.setDebug(true); // 用session为参数定义消息对象
MimeMessage message = new MimeMessage(session);
try {
// 加载发件人地址
message.setFrom(new InternetAddress(from));
// 加载收件人地址
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// 加载标题
message.setSubject(subject); // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
Multipart multipart = new MimeMultipart(); // 设置邮件的文本内容
BodyPart contentPart = new MimeBodyPart();
contentPart.setText(msg);
multipart.addBodyPart(contentPart);
if(!affix.equals("")) {
// 添加附件
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(affix);
// 添加附件的内容
messageBodyPart.setDataHandler(new DataHandler(source));
// 添加附件的标题
// 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
messageBodyPart.setFileName("=?GBK?B?"
+ enc.encode(affixName.getBytes()) + "?=");
multipart.addBodyPart(messageBodyPart);
};
// 将multipart对象放到message中
message.setContent(multipart);
// 保存邮件
message.saveChanges();
// 发送邮件
Transport transport = session.getTransport("smtp");
// 连接服务器的邮箱
transport.connect(host, user, pwd);
// 把邮件发送出去
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
MailUtils cn = new MailUtils();
// 设置发件人地址、收件人地址和邮件标题
cn.setAddress("***@qq.com", "***@qq.com", "一个带附件的JavaMail邮件");
//设置要发送的文本内容
cn.setMsg("这是内容啊");
// 设置要发送附件的位置和标题
//cn.setAffix("C:/kms10.log", "kms10.log"); /**
* 设置smtp服务器以及邮箱的帐号和密码
* 邮箱必须开启 POP3/SMTP服务 和 IMAP/SMTP服务
* 因为程序属于第三方登录,所以登录密码必须使用授权码
*/
// 注意: [授权码和你平时登录的密码是不一样的]
cn.send("smtp.qq.com", myEmailAccount, myEmailPassword); }
}
}
sun.misc.BASE64Encoder在Eclipse中不能直接使用的原因和解决方案 http://www.cnblogs.com/remember-forget/p/8921756.html
http://static.runoob.com/download/mail.jar
http://static.runoob.com/download/activation.jar
javamail 发送邮件demo(文字与附件)的更多相关文章
- javamail 发送邮件demo
package com.suntray.test; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.M ...
- JavaMail发送邮件的笔记及Demo
最近碰到一个需求,就是注册用户时候需要向用户发送激活邮箱,于是照着网上搜来的demo自己试着运行了一下,发件时我用的是网易163邮箱,收件时用QQ邮箱,运行后报了一个错误: 网络上搜索解决方式,多次尝 ...
- JavaMail发送邮件
发送邮件包含的内容有: from字段 --用于指明发件人 to字段 --用于指明收件人 subject字段 --用于说明邮件主题 cc字段 -- 抄送,将邮件发送给收件人的同时抄 ...
- JavaMail发送邮件第一版
首先,我们先来了解一个基本的知识点,用什么工具来发邮件? 简单的说一下,目前用的比较多的客户端:OutLook,Foxmail等 顺便了解一下POP3.SMTP协议的区别: POP3,全名为" ...
- javamail发送邮件的简单实例
今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接 ...
- javamail发送邮件的简单实例(转)
今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 注意:要先导入javamail的mail.jar ...
- javamail发送邮件的简单实例(转)
javamail发送邮件的简单实例 今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码 ...
- javamail发送邮件(转)
今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接 ...
- 使用JavaMail发送邮件-从FTP读取图片并添加到邮件正文发送
业务分析: 最近工作需要,需要从FTP读取图片内容,添加到邮件正文发送.发送邮件正文,添加附件采用Spring的MimeMessageHelper对象来完成,添加图片也将采用MimeMessageHe ...
随机推荐
- mongodb - Replication Set成员维护
1.添加复制集成员 ybb:PRIMARY> rs.add("cc.example.com:27020") { "ok" : 1 } ybb:PRIMAR ...
- Mac / Windows 下的 FTP 工具filezilla
https://filezilla-project.org/download.php?platform=osx
- blender, fbx导入blender进行编辑
fbx文件导入blender后,直接点下面Object Mode弹不出下拉菜单,从而无法进入Edit Mode.解法是先点一下右边Scene层级列表中的Sphere节点,将其选中,然后再点下面的Obj ...
- Jetty - Container源码分析
1. 描述 Container提供管理bean的能力. 基于Jetty-9.4.8.v20171121. 1.1 API public interface Container { // 增加一个bea ...
- Vivado使用技巧:封装自己设计的IP核
概述 Vivado在设计时可以感觉到一种趋势,它鼓励用IP核的方式进行设计.“IP Integrator”提供了原理图设计的方式,只需要在其中调用设计好的IP核连线.IP核一部分来自于Xilinx ...
- C++语言基础(23)-拷贝构造函数
当以拷贝的方式初始化一个对象时,会调用一个特殊的构造函数,就是拷贝构造函数(Copy Constructor). 例如: #include <iostream> #include < ...
- HTTP认证机制
HTTP的询问/应答机制 如下图: 一个实例的图: 1.客户端请求资源 2.服务器对用户进行询问,在WWW-Authenticate首部中指明在哪里,如何进行认证 3.客户端会在Authenticat ...
- 获取真实的IE版本(转)
IE 的浏览器模式和文本模式(二) 发表于 2013-09-07 Author: Jerry Qu 文章目录 判断真正的 IE 版本 JScript 引擎版本号 文本模式对 JScript 没影响? ...
- 【iOS与EV3混合机器人编程系列之四】iOS_WiFi_EV3_Library 剖析之中的一个:WiFi UDP和TCP
在上一篇文章中.我们通过编写EV3 Port Viewer项目实现了iOS监測EV3的实时端口数据. 程序最核心的部分就是我们的开源码库iOS_WiFi_EV3_Library. 那么,在本文中,我们 ...
- impala+hdfs+parquet格式文件
[创建目录]hdfs dfs -mkdir -p /user/hdfs/sample_data/parquet [赋予权限]sudo -u hdfs hadoop fs -chown -R impal ...