基于 java mail包做的邮件发送客户端
发送客户端
package com.gbcom.protocol.mail;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import java.util.Vector;
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 org.apache.log4j.Logger;
/**
* 邮件发送客户端
* @author SYZ
* @date 2016-12-8 下午03:20:54
* @version 1.0.0
* @see com.gbcom.protocol.mail.MailSender
*/
public class MailSender {
public static final Logger logger =Logger.getLogger(MailSender.class);
private final Properties props;//仅构造函数可以赋值,其它只能读取,保证线程安全
private final String MAIL_SENDER_NAME;
private final String MAIL_SENDER_PASSWORD;
private final String MAIL_SENDER_ADDR;
private final Set<String> MAIL_RECEIVER_SET ;
private static final MailSender instance = new MailSender();
private MailSender(){
// 1.0 封装参数,从模板获取
props = new Properties();
props.put("mail.host", "smtp.163.com");//// 服务器地址
props.put("mail.smtp.port", "" + 25); // 端口号
props.put("mail.transport.protocol","smtp");// 暂时使用SMTP协议,可去掉
props.put("mail.smtp.auth", "true");
//自定义属性
Set<String> receiver = new HashSet<String>();
receiver.add("receivername@163.com");
MAIL_SENDER_NAME = "username";
MAIL_SENDER_PASSWORD = "passwd";
MAIL_SENDER_ADDR="username@163.com";
MAIL_RECEIVER_SET = receiver;
}
/**
* 获取单例
* @return MailSender
*/
public static MailSender getInstance(){
return instance;
}
public void sendMail(String subject,String content) throws MessagingException{
Message msg = buildDefaultMsg();
msg.setSubject(subject);// 设定信中的主题
msg.setSentDate(new Date());// 设定送信的时间
msg.setContent(content, "text/html;charset=utf-8");
msg.saveChanges();
//4.0发送
Transport.send(msg);
}
private Message buildDefaultMsg() throws MessagingException {
// 2.0 产生新的邮件Session 服务
SmtpAuthentic auth = new SmtpAuthentic(MAIL_SENDER_NAME, MAIL_SENDER_PASSWORD);
Session mailSession = Session.getInstance(props, auth);//带简单鉴权
mailSession.setDebug(true);////邮件打印
// 3.0 封装邮件Msg
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(MAIL_SENDER_ADDR));// 设定传送邮件的发信人
InternetAddress address = null;
for (String revAddress : MAIL_RECEIVER_SET) {
address = new InternetAddress(revAddress);
msg.addRecipient(Message.RecipientType.TO, address);
}
msg.setDataHandler(new javax.activation.DataHandler("alarm",
"text/html"));
return msg;
}
public void sendMail(String subject,String context,Set<String> files){
}
/**
* 发送邮件方法
*
*
* @param sendAddress
* : 发件人地址
* @param name
* : 发件人姓名
* @param password
* : 发件人密码
* @param emailServer
* : 发送的邮箱服务器地址 例smtp.163.com
* @param revAddresses
* : 收件箱地址
* @param title
* : 发送邮件的主题
* @param content
* : 发送邮件的内容 可以是超文本标记语言
* @throws MessagingException
* MessagingException
* @throws AddressException
* AddressException
*
*/
public static void sendSmtpEmail(String sendAddress, String name,
String password, String emailServer, String[] revAddresses,
String title, String content) throws AddressException,
MessagingException {
if (revAddresses == null || revAddresses.length == 0) {
return;
}
// 1.0 设置邮件协议属性
Properties props = new Properties();
props.put("mail.host", emailServer);//// 服务器地址
props.put("mail.smtp.port", "" + 25); // 端口号
props.put("mail.transport.protocol","smtp");// 暂时使用SMTP协议,可去掉
props.put("mail.smtp.auth", "true");
// 2.0 产生新的邮件Session 服务
// Session mailSession = Session.getDefaultInstance(props, auth);//不带鉴权
// 需鉴权,用户名及密码::用户名为@前的部分,如"pujing@gbcom.com.cn",用户名为:pujing
SmtpAuthentic auth = new SmtpAuthentic(name, password);
Session mailSession = Session.getInstance(props, auth);//带简单鉴权
mailSession.setDebug(true);////邮件打印
// 3.0 封装邮件Msg
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(sendAddress));// 设定传送邮件的发信人
// 设定传送邮件至收信人的信箱列表
InternetAddress address = null;
for (String revAddress : revAddresses) {
address = new InternetAddress(revAddress);
msg.addRecipient(Message.RecipientType.TO, address);
}
msg.setSubject(title);// 设定信中的主题
msg.setSentDate(new Date());// 设定送信的时间
// 可以发送超文本的邮件 html格式 第一个参数可以指定为任意字符串
// 设定传送信的MIME Type
msg.setDataHandler(new javax.activation.DataHandler("alarm",
"text/html"));
// content为发送的内容
msg.setContent(content, "text/html;charset=utf-8");
msg.saveChanges();
Transport.send(msg);
}
/**
* 发送邮件方法
*
* @param sendAddress
* : 发件人地址
* @param name
* : 发件人姓名
*
*
* @param password
* : 发件人密码
*
*
* @param emailServer
* : 发送的邮箱服务器地址 例smtp.163.com
* @param revAddresses
* : 收件箱地址
* @param title
* : 发送邮件的主题
* @param content
* : 发送邮件的内容 可以是超文本标记语言
* @param file
* : 发送邮件的附件
* @throws MessagingException
* MessagingException
* @throws AddressException
* AddressException
*
*/
public static void sendSmtpEmail(String sendAddress, String name,
String password, String emailServer, String[] revAddresses,
String title, String content, Vector<String> file)
throws AddressException, MessagingException {
if (revAddresses == null || revAddresses.length == 0) {
return;
}
// 设定所要用的Mail 服务器和所使用的传输协议
Properties props = new Properties();
props.put("mail.host", emailServer);
props.put("mail.smtp.auth", "true");
SmtpAuthentic auth = new SmtpAuthentic(name, password);
Session mailSession = Session.getInstance(props, auth);
boolean sessionDebug = false;
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(sendAddress));
InternetAddress address = null;
for (String revAddress : revAddresses) {
address = new InternetAddress(revAddress);
msg.addRecipient(Message.RecipientType.TO, address);
}
msg.setSubject(title);
msg.setSentDate(new Date());
// msg.setDataHandler(new
// javax.activation.DataHandler("alarm","text/html"));
// multipart
Multipart mp = new MimeMultipart();
MimeBodyPart mbpContent = new MimeBodyPart();
mbpContent.setText(content);
mp.addBodyPart(mbpContent);
/* 往邮件中添加附件 */
Enumeration<String> efile = file.elements();
String fileName;
while (efile.hasMoreElements()) {
MimeBodyPart mbpFile = new MimeBodyPart();
fileName = efile.nextElement().toString();
FileDataSource fds = new FileDataSource(fileName);
mbpFile.setDataHandler(new DataHandler(fds));
mbpFile.setFileName((fds.getName()));
mp.addBodyPart(mbpFile);
}
msg.setContent(mp);
msg.saveChanges();
Transport.send(msg);
}
/**
* @param args
*/
public static void main(String[] args) {
try {
for(int i=0;i<10;i++){
MailSender.getInstance().sendMail("hellow", "中国馆");
}
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
用户信息
package com.gbcom.protocol.mail;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/**
* 封装邮件用户信息
* @author SYZ
* @date 2016-12-8 下午03:23:08
* @version 1.0.0
* @see com.gbcom.protocol.mail.SmtpAuthentic
*/
public class SmtpAuthentic extends Authenticator {
/** Creates a new instance of Authentic */
public SmtpAuthentic() {
}
/**
*
* TODO description here
*
* @param name
* name
* @param password
* password
*/
public SmtpAuthentic(String name, String password) {
this.setUsername(name);
this.setPwd(password);
}
// username为发送邮箱@前面的部分
private String username = "";
// pwd为发送邮箱的密码
private String pwd = "";
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(getUsername(), getPwd());
}
/**
*
* TODO description here
*
* @return username
*/
public String getUsername() {
return username;
}
/**
*
* TODO description here
*
* @param username
* username
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
* TODO description here
*
* @return pwd
*/
public String getPwd() {
return pwd;
}
/**
*
* TODO description here
*
* @param pwd
* pwd
*/
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
mail的简单例子
分享到:
相关推荐
java实现的邮件收发系统,用swing开发了界面
JAVA简单邮件发送客户端程序设计
JAVA简单邮件发送客户端程序设计
JAVA简单邮件发送客户端程序的设计说明.doc
这是一个关于java网络编程的课程设计,邮件客户端,主要用到smtp协议,pop3协议,mine协议等主要实现邮件配置,邮件发送和接收等功能
[计算机软件及应用]JAVA简单邮件发送客户端程序设计
实现邮件发送的客户端,使用java的界面设计,可以运行,不用再导入Java包。
Java Socket 实现SMTP邮件发送,支持SSL/TSL
首先,我们原本可以直接通过Intent来调用系统邮件客户端发送邮件,但是这种发送需要跳转activity很不方便,所以...很幸运,在google code上有一个现成的javaMail的java邮件客户端,我们只需要调用其中的接口就可以了。
java课程设计之发送邮件客户端,带发送附件,直接可以发送,需要填写smtp等信息,这个是必须要的,不管用什么方式
基于smtp协议实现的邮件客户端代码,Java实现。
在这篇博客中,我们将使用Java语言来设计和实现一个基本的电子邮件客户端应用,具有发送和接收电子邮件的功能。 开发环境 在开始之前,确保你的开发环境中安装了以下工具和技术: Java Development Kit (JDK): ...
能模拟电子邮件的发送,包括qq、sina(新浪)、163等邮件,使用SMTP协议(smtp.qq.com smtp.sina.com smtp.163.com)
Java应用发送163邮件demo
基于Javamail开发的带界面的邮件客户端,功能包括包括邮件发送,邮件转发,发送附件,邮件接受,邮件删除,邮件查询等。
首先,我们原本可以直接通过Intent来调用系统邮件客户端发送邮件,但是这种发送需要跳转activity很不方便,所以我...很幸运,在google code上有一个现成的javaMail的java邮件客户端,我们只需要调用其中的接口就可以了
一个可运行的邮件提醒功能,java【对应博客 https://blog.csdn.net/u013332981/article/details/80047139】
ews-java-api 是用来访问 Exchange Web 服务的 Java 客户端库,API 支持 Office 365 Exchange Online。 ============================================ 其实资源是这位朋友的, 我这边只是把jar包收集齐全了,可以...