下面有完整可以运行的代码。本人亲自测试,可以运行。附件有所用到的jar包和源码。需要的朋友可以直接下载进行测试和研究,本人也是在网上找到的代码。一起分享下
直接上源码
1. 邮件的基本信息(方便就直接设置为静态了)
下面最好是做为一个javabean
package com.lgf.Email;
import java.util.Date;
public class EmailMessage
{
/**
* 邮件的信息,可以自己进行设置。
* 为了方便直接全部设置为静态
*/
// 收件人邮箱
public static String TO = "[email protected]";
// 发件人邮箱
public static String FROM = "[email protected]";
public static String FROM_NAME = "xxx";
// 抄送人
public static String CC="[email protected]";
// 暗送人
public static String BCC="[email protected]";
// 邮件的类型
public static String Email_Content = "text/plain";
// 邮件标题
public static String Email_Subject = "Test Email With JavaMail";
// 邮件头
public static String Email_Header = "This Is Email Header";
// 内容
public static String Email_Body = "<a href=\"http://www.baidu.com\">This Is Email Body</a>";
// 服务器 比如QQ的可以设置为smtp.qq.com
public static String Email_Host = "smtp.xxx.com";
// 发送时间
public static Date sendDate = new Date();
// 是否需要验证用户名和密码
public static boolean validate = true;
}
2. 服务器验证(就是一般登入时候的用户名和密码)
package com.lgf.Email;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/**
* 用户名和密码的验证
* @author lgf
*
*/
public class MailAuthenticator extends Authenticator{
private String username="xxxxx";
private String password="xxxxx";
public MailAuthenticator() {
super();
}
/**
* 设置验证的用户名和密码
*/
public MailAuthenticator(String userName , String password) {
super();
this.username = userName;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(this.username,this.password);
}
}
[size=large]
3. 发送邮件前设置信息和步骤
package com.lgf.Email;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
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;
import com.lgf.SendEmail.MailAuthenticator;
public class SendEmail
{
/**
* 发送普通邮件
* @throws Exception
*/
public void doSendNormalMail()
{
// 获取系统环境
Properties prop = new Properties();
Authenticator auth = null;
// 判断发送邮件是否需要验证
if (EmailMessage.validate)
{
// 邮件服务器认证 用户名和密码
auth = new MailAuthenticator();
}
// 添加必要的信息
prop.put("mail.smtp.host", EmailMessage.Email_Host);
prop.put("mail.smtp.auth", "true");
// 设置对话和邮件服务器进行通讯
Session session = Session.getDefaultInstance(prop, auth);
// 在控制台显示Debug信息
session.setDebug(true);
// 设置邮件对象
Message message = new MimeMessage(session);
try
{
// 设置邮件主题
message.setSubject(EmailMessage.Email_Subject);
// 设置邮件标题
message.setHeader("Header", EmailMessage.Email_Header);
// 设置发送时间
message.setSentDate(EmailMessage.sendDate);
// 设置发信人地址 和 名字
Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);
// 把发件人信息添加到信息中
message.setFrom(address);
// 设置发件人地址
Address toAddress = new InternetAddress(EmailMessage.TO);
// 设置接收人地址
message.setRecipient(Message.RecipientType.TO, toAddress);
// 设置多个收件人地址
// message.addRecipient(Message.RecipientType.TO,new InternetAddress("[email protected]"));
// 设置邮件格式
message.setContent("Content", EmailMessage.Email_Content);
// 设置邮件内容 必须在设置文件格式后面
message.setText(EmailMessage.Email_Body);
// 保存上面添加的信息
message.saveChanges();
// 发送邮件
System.out.println("sendNormalEmail() 开始发送邮件……");
Transport.send(message);
System.out.println("发送成功!");
} catch (Exception e)
{
System.out.println("出错");
e.printStackTrace();
}
}
/**
* 发送HTML格式的邮件
*/
public void doSendHtmlMail()
{
// 获取系统环境
Properties prop = new Properties();
Authenticator auth = null;
if (EmailMessage.validate)
{
// 邮件服务器认证 用户名和密码
auth = new MailAuthenticator();
}
// 添加必要的信息
prop.put("mail.smtp.host", EmailMessage.Email_Host);
prop.put("mail.smtp.auth", "true");
// 设置对话和邮件服务器进行通讯
Session session = Session.getDefaultInstance(prop, auth);
// 设置邮件对象
Message message = new MimeMessage(session);
try
{
// 设置邮件主题
message.setSubject(EmailMessage.Email_Subject);
// 设置邮件标题
message.setHeader("Header", EmailMessage.Email_Header);
// 设置发送时间
message.setSentDate(EmailMessage.sendDate);
// 设置发信人地址 和 名字
Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);
// 把发件人信息添加到信息中
message.setFrom(address);
// 设置发件人地址
Address toAddress = new InternetAddress(EmailMessage.TO);
// 设置接收人地址
message.setRecipient(Message.RecipientType.TO, toAddress);
// 设置多个收件人地址
// message.addRecipient(Message.RecipientType.TO,new InternetAddress("[email protected]"));
// 设置发送信息的内容 下面为发送hmml
// 设置邮件格式
EmailMessage.Email_Content = "text/html; charset=utf-8";
message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content);
// 保存上面添加的信息
message.saveChanges();
// 发送邮件
System.out.println("doSendHtmlMail() 开始发送邮件……");
Transport.send(message);
System.out.println("发送成功!");
} catch (Exception e)
{
System.out.println("出错");
e.printStackTrace();
}
}
/**
* 发送带有附件格式的邮件
*/
public void doSendAttachmentMail()
{
// 获取系统环境
Properties prop = new Properties();
Authenticator auth = null;
if (EmailMessage.validate)
{
// 邮件服务器认证 用户名和密码
auth = new MailAuthenticator();
}
// 添加必要的信息
prop.put("mail.smtp.host", EmailMessage.Email_Host);
prop.put("mail.smtp.auth", "true");
// 设置对话和邮件服务器进行通讯
Session session = Session.getDefaultInstance(prop, auth);
// 设置邮件对象
Message message = new MimeMessage(session);
try
{
// 设置邮件主题
message.setSubject(EmailMessage.Email_Subject);
// 设置邮件标题
message.setHeader("Header", EmailMessage.Email_Header);
// 设置发送时间
message.setSentDate(EmailMessage.sendDate);
// 设置发信人地址 和 名字
Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);
// 把发件人信息添加到信息中
message.setFrom(address);
// 设置发件人地址
Address toAddress = new InternetAddress(EmailMessage.TO);
// 设置接收人地址
message.setRecipient(Message.RecipientType.TO, toAddress);
// 设置多个收件人地址
// message.addRecipient(Message.RecipientType.TO,new InternetAddress("[email protected]"));
// 设置发送信息的内容 下面为发送附件
message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content);
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("bodypart");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
// 设置上传的资源
DataSource source = new FileDataSource("E:\\3.doc");
// 添加到
messageBodyPart.setDataHandler(new DataHandler(source));
// 设置文件名称,记得后缀名
messageBodyPart.setFileName("test.doc");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
// 保存上面添加的信息
message.saveChanges();
// 发送邮件
System.out.println("doSendAttachmentMail() 开始发送邮件……");
Transport.send(message);
System.out.println("发送成功!");
} catch (Exception e)
{
System.out.println("出错");
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args)
{
// new SendEmail().doSendNormalMail();
// new SendEmail().doSendHtmlMail();
new SendEmail().doSendAttachmentMail();
}
}
运行前必须把邮件的基本信息xxx都改为你自己有的邮件
下面附上源码,和jar包。