java mail邮件发送(带附件) 支持SSL
java mail邮件发送(带附件)有三个类
MailSenderInfo.java
package mail; import java.util.Properties;
import java.util.Vector;
public class MailSenderInfo {
// 发送邮件的server的IP和端口
private String mailServerHost;
private String mailServerPort = "25";
// 邮件发送者的地址
private String fromAddress;
// 邮件接收者的地址
private String toAddress;
// 登陆邮件发送server的username与password
private String userName;
private String password;
// 是否须要身份验证
private boolean validate = false;
// 是否启用ssl
private boolean validateSSL = false;
// 邮件主题
private String subject;
// 邮件的文本内容
private String content;
// 邮件附件的文件名称
private Vector attachFileNames;
/**
* 获得邮件会话属性
*/
public Properties getProperties(){
Properties p = new Properties();
p.put("mail.smtp.host", this.mailServerHost);
p.put("mail.smtp.port", this.mailServerPort);
p.put("mail.smtp.auth", validate ? "true" : "false");
return p;
}
public String getMailServerHost() {
return mailServerHost;
}
public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
}
public String getMailServerPort() {
return mailServerPort;
}
public void setMailServerPort(String mailServerPort) {
this.mailServerPort = mailServerPort;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
} public Vector getAttachFileNames() {
return attachFileNames;
}
public void setAttachFileNames(Vector attachFileNames) {
this.attachFileNames = attachFileNames;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String textContent) {
this.content = textContent;
}
public boolean isValidateSSL() {
return validateSSL;
}
public void setValidateSSL(boolean validateSSL) {
this.validateSSL = validateSSL;
}
}
MailAuthenticator.java
package mail; import javax.mail.*; public class MailAuthenticator extends Authenticator { private String userName;
private String password; public MailAuthenticator() {
} public MailAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
} protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
}
SimpleMailSender.java
package mail; import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
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;
import javax.mail.internet.MimeUtility; /**
* 简单邮件(带附件的邮件)发送器
*/
public class SimpleMailSender { /**
* 以html发送邮件(带附件)
*
* @param mailInfo
* 待发送的邮件的信息
*/
public boolean sendHtmlAndAffixMail(MailSenderInfo mailInfo) {
// 推断是否须要身份认证
MailAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
if(mailInfo.isValidateSSL()){
pro.put("mail.smtp.starttls.enable","true");
pro.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
}
// 假设须要身份认证,则创建一个password验证器
if (mailInfo.isValidate()) {
authenticator = new MailAuthenticator(mailInfo.getUserName(),
mailInfo.getPassword());
}
// 依据邮件会话属性和password验证器构造一个发送邮件的session
Session session = Session.getDefaultInstance(pro, authenticator);
try {
MimeMessage msg = new MimeMessage(session); // 构造MimeMessage 并设定主要的值
// MimeMessage msg = new MimeMessage();
msg.setFrom(new InternetAddress(mailInfo.getFromAddress()));
// msg.addRecipients(Message.RecipientType.TO, address);
// //这个仅仅能是给一个人发送email
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mailInfo.getToAddress()));
msg.setSubject(MimeUtility.encodeText(mailInfo.getSubject()));
Multipart mp = new MimeMultipart();// 构造Multipart
MimeBodyPart mbpContent = new MimeBodyPart();// 向Multipart加入正文
mbpContent.setContent(mailInfo.getContent(),
"text/html;charset=GB2312");
mp.addBodyPart(mbpContent);// 向MimeMessage加入(Multipart代表正文)
Vector file = mailInfo.getAttachFileNames();
Enumeration efile = file.elements();// 向Multipart加入附件
while (efile.hasMoreElements()) {
MimeBodyPart mbpFile = new MimeBodyPart();
String filename = efile.nextElement().toString();
System.out.println(filename.toLowerCase());
FileDataSource fds = new FileDataSource(filename);
mbpFile.setDataHandler(new DataHandler(fds));
System.out.println(fds.getName());
mbpFile.setFileName(MimeUtility.encodeText(fds.getName()));
// 向MimeMessage加入(Multipart代表附件)
mp.addBodyPart(mbpFile);
}
file.removeAllElements();
// 向Multipart加入MimeMessage
msg.setContent(mp);
msg.setSentDate(new Date());
msg.saveChanges();
// 发送邮件
Transport transport = session.getTransport("smtp");
transport.connect(mailInfo.getMailServerHost(), mailInfo
.getUserName(), mailInfo.getPassword());
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} catch (Exception mex) {
mex.printStackTrace();
return false;
}
return true; } }
測试类
package mail; import java.util.Vector; public class MailTest { /**
* @param args
*/
public static void main(String[] args) {
//这个类主要是设置邮件
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setMailServerHost(host);
mailInfo.setMailServerPort("465");
mailInfo.setValidate(true);
mailInfo.setValidateSSL(true);
mailInfo.setUserName("username");
mailInfo.setPassword("pwd");//您的邮箱password
mailInfo.setFromAddress("address");
mailInfo.setToAddress("XXXXX@sina.cn");
mailInfo.setSubject("设置邮箱标题");
mailInfo.setContent("今天应该是魅族粉的狂欢日!"+
"今天魅族在北京正式公布MX4,魅族MX4採用5.36寸1920×1152分辨率屏幕(PPI418),搭载联发科八核处理器,提供2070万像素摄像头,配备3100mAh电池,执行全新的Flyme 4.0系统,支持移动与联通网络双4G,安兔兔跑分46124分,提供深灰色、纯白色及土豪金版本号,16G版售价1799元,32G版售价1999元。");
//这个类主要来发送邮件
Vector fileNames = new Vector();
fileNames.add("D:\\delete\\周报表20140903103213.xls");
fileNames.add("D:\\delete\\复件 周报表20140903103213.xls");
fileNames.add("D:\\delete\\复件 (2) 周报表20140903103213.xls");
mailInfo.setAttachFileNames(fileNames);
SimpleMailSender sms = new SimpleMailSender();
// sms.sendTextMail(mailInfo);//发送文体格式
sms.sendHtmlAndAffixMail(mailInfo);//发送html格式
} }
java mail邮件发送(带附件) 支持SSL的更多相关文章
- System.Net.Mail邮件发送抄送附件(多个)
/// <summary> /// 邮件发送抄送附件 /// </summary> /// <param name="mailTo">收件人(可 ...
- 161013、java实现邮件群发带附件
要完成Java群发邮件功能,首先须加入mail.jar和activation.jar这两个包 下面是邮件的例子: import java.io.File; import java.util.Prope ...
- Java Mail 邮件发送简单封装
上一篇文章我们用写了一个Java Mail 的Demo,相信你已经可以用那个例子来发送邮件了.但是Demo 有很多的问题. 首先每次发送需要配置的东西很多,包括发件人的邮箱和密码.smtp服务器和SM ...
- Java Mail邮件发送的简单实现
1.什么是java mail JAVA MAIL是利用现有的邮件账户发送邮件的工具,通过JAVA Mail的操控,让程序自动的使用设置的邮箱发送邮件. 这一机制被广泛的用在注册激活和垃圾邮件的发送等方 ...
- Spring的javaMail邮件发送(带附件)
项目中经常用到邮件功能,在这里简单的做一下笔记,方便日后温习. 首先需要在配置文件jdbc.properties添加: #------------ Mail ------------ mail.smt ...
- Java Mail 邮件发送Demo
上周公司的项目要求开发邮件发送功能.自己在网上跟着教程边学边做了一下午,现在基本开发完成了.由于一个同事也想看下该怎么写,顺便学习下.所以我就写成了一遍教程,顺便巩固下邮件发送里面的内容. Demo ...
- UiPath: Send SMTP Mail Message 发送带附件的邮件
Tips:关于Hotmail的server和port的获取方式,请参考以下链接 https://support.office.com/en-us/article/Server-settings-you ...
- [PHP]使用PHPMailer发送带附件并支持HTML内容的邮件
来源:http://www.helloweba.com/view-blog-205.html PHPMailer是一个封装好的PHP邮件发送类,支持发送HTML内容的电子邮件,以及可以添加附件发送,并 ...
- java发送带附件的邮件
/** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...
随机推荐
- Android开发之配置adb工具的环境变量
在Android开发中,adb是一个非常好用也非常使用的工具,可是使用的时候假设没有改动环境变量,每一次都须要输入全然路径非常麻烦.解决的方法是在环境变量中加入adb工具的路径. Windows平台 ...
- VC 获取控制台窗体的句柄(hWnd)
在Windows中,句柄是一个系统内部数据结构的引用. 比如当你操作一个窗体.或说是一个Delphi窗体时,系统会给你一个该窗体的句柄,系统会通知你:你正在操作142号窗体.就此你的应用程序就能要求系 ...
- idea使用技巧资料篇
基本使用:https://my.oschina.net/lujianing/blog/177042#OSC_h1_2 解决idea卡顿问题:http://www.cnblogs.com/ae6623/ ...
- 英语发音规则---T字母
英语发音规则---T字母 一.总结 一句话总结: 1.T一般发[t]? ten [ten] num.十 letter [ˈletə(r)] n.信; 证书 meet [mi:t] vt.& v ...
- js写发布微博文本框---2017-04-14
实现效果: 1.文本框输入内容,低端字数对应减少 2.当文本框内容超出时,会显示字数超出多少 效果图如下: 实现代码: <!DOCTYPE html><html> <he ...
- 使用log4net记录日志到数据库(含自定义属性)
日志输出自定义属性! 特来总结一下: 一.配置文件 使用log4写入数据库就不多说了,网上方法很多,自定义字段如下 <commandText value="INSERT INTO db ...
- poj 2762 Going from u to v or from v to u? 【 强连通 拓扑排序】
给出n个点,m条边,问是否任意两点u,v,是否满足u能够到达v,或者v能够到达u 自己写的时候以为缩一下点,然后再判断一下能不能拓扑排序就可以了 但是--wa--- 后来看了这篇题解 http://e ...
- flex-2
1. 2. justify:整理版面 3. 4.归纳 justify-content:flex-start(默认).center.flex-end 下面还会提到剩下的两种项目在主轴上对齐方式: spa ...
- 树、递归、广度优先搜索(BFS)————二叉树的最小深度
解法一:递归 遇到叶子节点不递归,否则接着往子树递归,每次递归层数加1 要确定的是,一定要保证初始输入的节点是有子节点的.因为可能出现只有单子树的情况,所以要先确认这种情况. 具体过程: 1.分析初始 ...
- Centos7下安装Mongodb
Mongodb网盘路径:链接:https://pan.baidu.com/s/1rWJCPZ59EAW25ha1UF5czw 密码:u3zq 1.把安装包上传到linux服务器上,解压,然后我们把mo ...