下面代码可以实现普通qq邮箱发送邮件的功能,可以传附件,但是是固定的附件:

需要两个jar包:mail.jar,activation.jar

mail.jar 下载地址:
http://java.sun.com/products/javamail/downloads/index.html

activation.jar 下载地址:

http://java.sun.com/products/javabeans/jaf/downloads/index.html

必须要在qq邮箱中获得第三方登录授权码:

代码:

    /**
* 发送邮件(可以携带附件)
* @param to 收件人
*/
public void sendMessage(String to)
{
// 发件人电子邮箱
String from = "XXXXXXXXX@qq.com";
// 发件人电子邮箱密码(此为QQ邮箱第三方客户端登录授权码)
String password = "**********";
// 指定发送邮件的主机为
String host = "smtp.qq.com";
// 获取系统属性
Properties properties = System.getProperties();
// 设置邮件服务器
properties.setProperty("mail.smtp.host", host);
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.port", "465");
properties.put("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.auth", true);
// 获取默认session对象
Session session = Session.getDefaultInstance(properties,new Authenticator(){
public PasswordAuthentication getPasswordAuthentication()
{
//发件人邮件用户名、密码
return new PasswordAuthentication("XXXXXXXXX@qq.com", "**********");
}
});
//设置获取debug信息
session.setDebug(true);
try{
// 创建默认的 MimeMessage 对象
MimeMessage message = new MimeMessage(session);
// Set From: 头部头字段(发件人)
message.setFrom(new InternetAddress(from));
// Set To: 头部头字段(收件人)
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
// Set Subject: 头部头字段(邮件主题)
message.setSubject("测试邮件!");
// 设置消息体
message.setText("这是一个测试邮件");
//读取附件
try {
// 设置一个超文本对象
Multipart multipart = new MimeMultipart();
// 设置一个超文本的内容对象
BodyPart bodyPart;
// 创建一个文件读取对象,从文件路径将文件读取出来
File file = new File("D:/****.docx");
// 判断文件不存在则抛出异常
if(!file.exists()){
throw new IOException("文件不存在!请确定文件路径是否正确");
}
bodyPart = new MimeBodyPart();
// 创建一个文件数据对象来管理文件数据
DataSource dataSource = new FileDataSource(file);
// 将文件数据设置成统一的数据然后设置为bodyPart的数据
bodyPart.setDataHandler(new DataHandler(dataSource));
//文件名要加入编码,不然出现乱码
bodyPart.setFileName(MimeUtility.encodeText(file.getName()));
// 将bodyPart设置为附件的内容
multipart.addBodyPart(bodyPart);
//将附件加入邮件中
message.setContent(multipart);
} catch (Exception e) {
e.printStackTrace();
} // 获得transport示例对象
Transport transport = session.getTransport("smtp");
// 打开连接
transport.connect(host, from, password);
// 将message对象传递给transport对象,将邮件发送出去
transport.sendMessage(message, message.getAllRecipients());
// 关闭传输对象
transport.close();
System.out.println("Sent message successfully....");
}catch (MessagingException mex) {
mex.printStackTrace();
}
}

 点击下载所需jar包

发送邮件java实现的更多相关文章

  1. 爬虫获取邮箱,存入数据库,发送邮件java Mail

    在网页上获取邮箱: package com.my.test; import java.io.BufferedReader; import java.io.InputStreamReader; impo ...

  2. 使用 Java 发送邮件

    在我们的应用程序中有时需要给用户发送邮件,例如激活邮件.通知邮件等等.那么如何使用 Java 来给用户发送邮件呢? 使用 java 代码发送邮件 使用工具类发送邮件 使用Spring进行整合发送邮件 ...

  3. Java 学习(18):Java 序列化& 网络编程& 发送邮件

    --Java 序列化 -- 网络编程 -- 发送邮件 Java 序列化 Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据.有关对象的类型的信 ...

  4. 常用的Java代码汇总

    1. 字符串有整型的相互转换           Java   1 2 <strong>Stringa=String.valueOf(2);   //integer to numeric ...

  5. java 邮件

      使用java语言实现邮件的简单的发送和接受. 说明:使用Java应用程序发送E-mail比较简单,在使用下列程序之前,你需要将mail.jar和activation.jar 添加到你的CLASSP ...

  6. java项目小手册

    集合了一些常用的小片段 1. 字符串有整型的相互转换 Java代码 String a = String.valueOf(2); //integer to numeric string int i = ...

  7. Java发送邮箱

    smtp与pop3 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议 SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器 POP3是Post Office ...

  8. (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例)

    (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例) https://pan.baidu.com/s/1L54VuFwCdKVnQGVc8vD1TQnwmj java手册 Ja ...

  9. Java实现邮箱验证码

    前言 相比于java实现短信验证码,邮箱验证码就简单了许多,目前只是简单的利用java发送自定义内容至指定邮箱,等过几天再弄短信和邮箱验证码Web版本的.查询网上资料,得知相比于网易邮箱,QQ邮箱是最 ...

随机推荐

  1. 对 PInvoke 函数“WinVideo!WinVideo.webcam::SendMessage”的调用导致堆栈不对称

    从.NET1.1升级到.NET2.0时出现的PInvokeStackImbalance错误微软官方的解释 (http://msdn2.microsoft.com/zh-cn/library/0htdy ...

  2. size对齐

    写了很多程序,在很多地方都要用到内存长度对齐,比如文件的大小,pe文件内存的对齐等等. 下面记下两种简单的方法,觉得没啥大用处. #include <IOSTREAM> #include ...

  3. word2vec配置到使用

    (1)首先下载word2vec,地址:https://code.google.com/p/word2vec/,可能下载的时候有问题,google上不去,那么可以从csdn上面下载. 解压后目录如下: ...

  4. 关于sql 外键的讨论。

    外键是否采用看业务应用场景,以及开发成本的,大致列下什么时候适合,什么时候不适合使用: 1. 互联网行业应用不推荐使用外键: 用户量大,并发度高,为此数据库服务器很容易成为性能瓶颈,尤其受IO能力限制 ...

  5. php中如何获取文件的正确路径

    以上面的图片为例子 //我们这里需要使用到 $_FILE echo "<pre>"; print_r($_FILES); echo $_SERVER['DOCUMENT ...

  6. UML--用例图

    一.UML概述 1.UML的作用:a 把复杂的问题分解   b 实现了可视化     UML是由Rational公司创建的 2.UML是什么:是一种语言,有属于自己的标准表达规则,是一种分析设计语言, ...

  7. 推荐大家使用的CSS书写规范、顺序(转载)

    转自:http://www.admin10000.com/document/2979.html 写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体 ...

  8. 实用chrome插件

    2015年最实用的9款chrome插件 随着14年chrome浏览器的市场超过IE浏览器,chrome凭借它强劲性能和出色的使用体验真正的登上了平民级的殿堂.今天小编就为大家推荐9款自己常用的chro ...

  9. DTW-js版

    最近想试试语音识别,然后看到了DTW这个算法 主要参考:http://www.cnblogs.com/rockyf/articles/4519352.html function dtw(arr1, a ...

  10. 弗洛伊德(Floyd)算法

    #include <stdio.h> #define MAXVEX 20 //最大顶点数 #define INFINITY 65535 //∞ typedef struct {/* 图结构 ...