import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
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;
public class Mail {
private MimeMessage mimeMsg; // MIME邮件对象
private Session session; // 邮件会话对象
private Properties props; // 系统属性
private boolean needAuth = false; // smtp是否需要认证
private String username = ""; // smtp认证用户名和密码
private String password = "";
private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成
public Mail(String smtp) {
setSmtpHost(smtp);
createMimeMessage();
}
public void setSmtpHost(String hostName) {
System.out.println("设置系统属性:mail.smtp.host = " + hostName);
if (props == null)
props = System.getProperties(); // 获得系统属性对象
props.put("mail.smtp.host", hostName); // 设置SMTP主机
}
public boolean createMimeMessage() {
try {
System.out.println("准备获取邮件会话对象!");
session = Session.getDefaultInstance(props, null); // 获得邮件会话对象
} catch (Exception e) {
System.err.println("获取邮件会话对象时发生错误!" + e);
return false;
}
System.out.println("准备创建MIME邮件对象!");
try {
mimeMsg = new MimeMessage(session); // 创建MIME邮件对象
mp = new MimeMultipart(); // mp 一个multipart对象
// Multipart is a container that holds multiple body parts.
return true;
} catch (Exception e) {
System.err.println("创建MIME邮件对象失败!" + e);
return false;
}
}
public void setNeedAuth(boolean need) {
System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);
if (props == null)
props = System.getProperties();
if (need) {
props.put("mail.smtp.auth", "true");
} else {
props.put("mail.smtp.auth", "false");
}
}
public void setNamePass(String name, String pass) {
System.out.println("程序得到用户名与密码");
username = name;
password = pass;
}
public boolean setSubject(String mailSubject) {
System.out.println("设置邮件主题!");
try {
mimeMsg.setSubject(mailSubject);
return true;
} catch (Exception e) {
System.err.println("设置邮件主题发生错误!");
return false;
}
}
public boolean setBody(String mailBody) {
try {
System.out.println("设置邮件体格式");
BodyPart bp = new MimeBodyPart();
// 转换成中文格式
bp.setContent(
"<meta http-equiv=Content-Type content=text/html; charset=gb2312>"
+ mailBody, "text/html;charset=GB2312");
mp.addBodyPart(bp);
return true;
} catch (Exception e) {
System.err.println("设置邮件正文时发生错误!" + e);
return false;
}
}
public boolean addFileAffix(String filename) {
System.out.println("增加邮件附件:" + filename);
try {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
return true;
} catch (Exception e) {
System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
return false;
}
}
public boolean setFrom(String from) {
System.out.println("设置发信人!");
try {
mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人
return true;
} catch (Exception e) {
return false;
}
}
public boolean setTo(String to) {
System.out.println("设置收信人");
if (to == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
.parse(to));
return true;
} catch (Exception e) {
return false;
}
}
public boolean setCopyTo(String copyto) {
System.out.println("发送附件到");
if (copyto == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(copyto));
return true;
} catch (Exception e) {
return false;
}
}
public boolean sendout() {
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在发送邮件....");
Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg, mimeMsg
.getRecipients(Message.RecipientType.TO));
// transport.send(mimeMsg);
System.out.println("发送邮件成功!");
transport.close();
return true;
} catch (Exception e) {
System.err.println("邮件发送失败!" + e);
return false;
}
}
public static void main(String[] args) {
String mailbody = "发送邮件测试 <font color=red>欢迎你,java</font>";
Mail themail = new Mail("smtp.sina.com");
themail.setNeedAuth(true);
// 标题
if (themail.setSubject("发送邮件测试") == false)
return;
// 邮件内容 支持html 如 <font color=red>欢迎你,java</font>
if (themail.setBody(mailbody) == false)
return;
// 收件人邮箱
if (themail.setTo("112@sina.cn") == false)
return;
// 发件人邮箱
if (themail.setFrom("12@sina.cn") == false)
return;
// 设置附件
// if (themail.addFileAffix("mail.txt") == false)
// return; // 附件在本地机子上的绝对路径
themail.setNamePass("12@sina.cn", "密码"); // 用户名与密码,即您选择一个自己的电邮
if (themail.sendout() == false)
return;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
java实现邮件自动发送
共16个文件
java:5个
class:5个
classpath:2个
5星 · 超过95%的资源 需积分: 50 84 下载量 187 浏览量
2013-05-10
08:29:24
上传
评论 3
收藏 15KB RAR 举报
温馨提示
用java实现如何发送邮件,总共两个,都是源代码,拿着我的代码能直接运行的,其中一个可以打包的,可以在你们的程序里面直接打包使用。方便他人 方便自己
资源推荐
资源详情
资源评论
收起资源包目录
Mail.rar (16个子文件)
mailFor163
bin
com
util
mail
MyAuthenticator.class 770B
SimpleMailSender.class 3KB
MailSenderInfo.class 3KB
MailTest.class 1KB
.settings
org.eclipse.jdt.core.prefs 629B
src
com
util
mail
MailSenderInfo.java 2KB
MailTest.java 774B
MyAuthenticator.java 448B
SimpleMailSender.java 4KB
.project 386B
.classpath 868B
mailForSina
bin
Mail.class 7KB
.settings
org.eclipse.jdt.core.prefs 629B
src
Mail.java 6KB
.project 387B
.classpath 868B
共 16 条
- 1
资源评论
- hacker少年2017-05-01不错不错啊
- sinodream20082018-04-07很好,谢谢了
wswg1987
- 粉丝: 7
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功