Java实现发邮件功能
代码如下:
package com.weimob.finance.utils;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
/**
* Java Mail 工具类
*
* @author XueQi
* @version 1.0
*
*/
public class MailUtils {
private static String host;
private static String username;
private static String password;
private static String from;
private static String nick;
static {
try {
// Test Data
host = "smtp.qq.com";
username = "yourqq@qq.com";
password = "*******";
from = "yourqq@qq.com";
nick = "nickinfo";
// nick + from 组成邮箱的发件人信息
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 发送邮件
*
* @param to
* 收件人列表,以","分割
* @param subject
* 标题
* @param body
* 内容
* @param filepath
* 附件列表,无附件传递null
* @return
* @throws MessagingException
* @throws AddressException
* @throws UnsupportedEncodingException
*/
public static boolean sendMail(String to, String subject, String body,
List<String> filepath) throws AddressException, MessagingException,
UnsupportedEncodingException {
// 参数修饰
if (body == null) {
body = "";
}
if (subject == null) {
subject = "无主题";
}
// 创建Properties对象
Properties props = System.getProperties();
// 创建信件服务器
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true"); // 通过验证
props.put("mail.smtp.port", "465");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.ssl.enable", "true");
//props.put("mail.debug", "true");
// 得到默认的对话对象
Session session = Session.getDefaultInstance(props, null);
// 创建一个消息,并初始化该消息的各项元素
MimeMessage msg = new MimeMessage(session);
nick = MimeUtility.encodeText(nick);
msg.setFrom(new InternetAddress(nick + "<" + from + ">"));
// 创建收件人列表
if (to != null && to.trim().length() > 0) {
String[] arr = to.split(",");
int receiverCount = arr.length;
if (receiverCount > 0) {
InternetAddress[] address = new InternetAddress[receiverCount];
for (int i = 0; i < receiverCount; i++) {
address[i] = new InternetAddress(arr[i]);
}
msg.addRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
// 后面的BodyPart将加入到此处创建的Multipart中
Multipart mp = new MimeMultipart();
// 附件操作
if (filepath != null && filepath.size() > 0) {
for (String filename : filepath) {
MimeBodyPart mbp = new MimeBodyPart();
// 得到数据源
FileDataSource fds = new FileDataSource(filename);
// 得到附件本身并至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
// 得到文件名同样至入BodyPart
mbp.setFileName(fds.getName());
mp.addBodyPart(mbp);
}
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(body);
mp.addBodyPart(mbp);
// 移走集合中的所有元素
filepath.clear();
// Multipart加入到信件
msg.setContent(mp);
} else {
// 设置邮件正文
msg.setText(body);
}
// 设置信件头的发送日期
msg.setSentDate(new Date());
msg.saveChanges();
// 发送信件
Transport transport = session.getTransport("smtp");
transport.connect(username, password);
transport.sendMessage(msg,
msg.getRecipients(Message.RecipientType.TO));
transport.close();
return true;
} else {
System.out.println("None receiver!");
return false;
}
} else {
System.out.println("None receiver!");
return false;
}
}
public static void main(String[] args) throws AddressException,
UnsupportedEncodingException, MessagingException {
sendMail("toother@qq.com,yourqq@qq.com", "注册信息邮件", "注册邮件,有附件", null);
System.out.println("sendMail success!");
}
}
准备过程:
1.QQ邮箱两个
2.发送邮件的jar包
mail.jar
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
3.用QQ给QQ发送邮件,发送方得开启第三方登录,也就是授权登录,下面就是获取授权码解释链接
需要开始POP3和SMTP,还有点击生成授权码
4.java代码(上面已附)
5运行,最后显示 250 Mail OK即发送成功
中间可能遇到的问题:
1.邮箱,帐号,密码配置不正确导致报connection failed error!
2.邮箱没有开启smpt协议。如上面步骤3操作
3.报 java.io.FileNotFoundException:
原因是,eclipse 自带的mail jar包与maven导入的mail jar包冲突,删除掉j2ee中mail jar ,冲突即可解决!
Java实现发邮件功能相关推荐
- 如何用java实现发邮件功能
如何用java实现发邮件功能 前言 前置条件 邮件服务器 电子邮件协议 JavaMail 实现 参考 前言 今天突然心学来潮,想用Java来实现发邮件的功能,想想这个在实际中还是蛮有用的,比如我举几个 ...
- Java实现发邮件功能---网易邮箱
目录 Java实现发邮件功能 前言 开发环境 代码 效果 结束语 Java实现发邮件功能 前言 电子邮件的应用场景非常广泛,例如新用户加入,即时发送优惠清单.通过邮件找回密码.监听后台程序,出现异常自 ...
- java之实现发邮件功能
实现发邮件功能 1.配置邮件服务器主机名:private static String myEmailSMTPHost = "smtp.qq.com";(邮箱服务器前面加" ...
- Spring Java Mail发邮件
今天测试了下spring的发邮件的功能 下上代码 在说遇到的问题 首先在applicationContext.xml配置邮件信息 <bean id="mailSender" ...
- javaMail实现发邮件功能
基础概念 1.SMTP邮件发送的请求的邮件服务器简称为SMTP服务器 默认端口号25 2.POP3协议 全名:邮局协议版本3 用来接收电子邮件 3.javaMial 顾名思义开发处理电子邮件的编程接口 ...
- 西门子精智HMI-TP1200发邮件功能
不是所有的工厂都可以派个员工,24小时盯着设备.因此我们可以借助西门子人机界面的自动发送邮件功能,可以实现远程报警功能,! 具体步骤如下: 服务器名称.端口:可以查看所使用邮箱的SMTP服务器设置(如 ...
- 简单快捷实现ASP在线发邮件功能
简单快捷实现ASP在线发邮件功能 在编写网上应用程序时,经常碰到需要在线发送邮件的问题,邮件内容是由程序动态决定的,如果你采用的是ASP方式来编写网上应用程序,如何简单.快捷地实现这一功能呢? 笔者在 ...
- 使用PHPMailer实现PHP通过QQ邮箱发邮件功能
第一步 composer require phpmailer/phpmailer 或直接访问https://github.com/PHPMailer/PHPMailer/下载 第二步 检查是否开启so ...
- python定时发邮件功能
我是python初学者,请多多指导,谢谢. 最近用python做了一个定时发邮件功能,位置https://www.aliyundrive.com/s/aRaFBwnYtxr,欢迎查看源码,阿里云盘下载 ...
最新文章
- bigdecimal 和负数比较_Java中BigDecimal精度和相等比较的坑
- 人像拍摄时眼部合焦的技巧
- 《C语言深度解剖》学习笔记之符号
- 机器学习基础-吴恩达-coursera-(第一周学习笔记)----Introduction and Linear Regression
- 域名带后缀_[Python 爬虫]获取顶级域名及对应的 WHOIS Server 及 whoisservers.txt 下载...
- 作者:姜春宇(1987-),男,中国信息通信研究院移动互联网与大数据部工程师,数据中心联盟大数据技术与产品工作组组长。...
- mac下缺乏make wget怎么办?
- dialog能提交数据吗_硬盘坏了能恢复数据吗?实用硬盘修复软件
- 多个JVM之间,能否共用同样的类?
- c++常用备忘(持续更新)
- 用Python 操作Web 前端 基础 1
- 学习记录:xmind2testcase测试用例模板
- 图书租借管理系统java_阅览室图书租借管理系统下载
- 计算机硬盘ssd,怎样判断电脑装的是不是固态硬盘
- 6自由度机械臂建模与仿真
- 共享打印机服务器脱机状态,打印机脱机工作怎么恢复 共享的打印机脱机状态...
- 忘记windows密码怎么办,教你五招!
- windows winrar 指令_WinRAR的命令行模式用法介绍
- 计算机评游戏图形低,5常见的PC游戏图形选项说明 | MOS86
- 点云文件格式转换——TXT、xyz等转换成pcd