首先是代码的实现
第一种方式
import java.util.Date;
import java.util.Properties;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* 邮件发送工具类
* @author xxxxx
* @email xxxx@163.com
* @date 2013-3-31 下午5:08:16
* @version 1.0
*/
public class EmailTools {
/**
* 邮件发送的方法
* @param to 收件人
* @param subject 主题
* @param content 内容
* @return 成功或失败
*/
public static boolean send(String to, String subject, String content){
// 第一步:创建Session
Properties props = new Properties();
//指定邮件的传输协议,smtp(Simple Mail Transfer Protocol 简单的邮件传输协议)
props.put("mail.transport.protocol", "smtp");
//指定邮件服务器
props.put("mail.host","smtp.126.com");
//指定邮件的发送人(您用来发送邮件的服务器,比如您的163\sina等邮箱)
props.put("mail.from", "xxxxxxxxxxxxx@126.com");
Session session = Session.getDefaultInstance(props);
// 开启调试模式
session.setDebug(true);
try {
// 第二步:获取邮件发送对象
Transport transport = session.getTransport();
// 连接邮件服务器,链接您的163、sina邮箱,用户名(不带@163.com,登录邮箱的邮箱账号,不是邮箱地址)、密码
transport.connect("lxxxxxxxxx", "orpwofqixxxxxxz");
// 第三步:创建邮件消息体
MimeMessage message = new MimeMessage(session);
//邮件的主题
message.setSubject(subject);
//邮件的内容
message.setContent(content, "text/html;charset=utf-8");
//邮件发送时间
message.setSentDate(new Date());
// 第四步:发送邮件
//第一个参数:邮件的消息体
//第二个参数:邮件的接收人,多个接收人用逗号隔开(test1@163.com,test2@sina.com)
transport.sendMessage(message, InternetAddress.parse(to));
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static void main(String[] args) {
//您要发送给谁,标题,内容
EmailTools email = new EmailTools();
boolean result = email.send("xxxxxxxx@qq.com", "你好", "你好你好你好你好你好你好你好你好");
if(result){
System.out.print("done");
}
}
}
第二种方式
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendEmail {
private static InternetAddress[] internetAddresses;
public static void getInternetAddress(){
String sendTo = "xxxxxxxx@qq.com";
if (!"".equals(sendTo)) {
String[] addresses = sendTo.split(";");
internetAddresses = new InternetAddress[addresses.length];
for (int i = 0; i < addresses.length; i++) {
InternetAddress addr = null;
try {
addr = new InternetAddress(addresses[i]);
} catch (AddressException e) {
e.printStackTrace();
}
if (addr != null)
internetAddresses[i] = addr;
}
}
}
public static void sendWarnEmails(String content) {
getInternetAddress();
System.out.print("\n*************\n");
System.out.print(internetAddresses);
System.out.print("\n*************\n");
String title = "加油卡充值系统预警";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
// props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.126.com");
props.put("mail.smtp.port", "25");
Session session = Session.getInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("lxxxxxxxxxx@126.com", "orpwofqiiqlvxxz");
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("lxxxxxxxxxxx@126.com"));
message.setRecipients(Message.RecipientType.TO, internetAddresses);
message.setSubject(title);
message.setText(content);
System.out.print("\n*******1*******\n");
Transport.send(message);
System.out.print("\n*******2*******\n");
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("\n***************\n");
SendEmail email = new SendEmail();
email.sendWarnEmails("hello word");
}
}
以上两种方式需要的jar包是mail-1.4.5.jar
可能存在的问题:在测试的时候如果输出栏中提示:javax.mail.AuthenticationFailedException: 535 Error: authentication failed
可能1:用户名称或者密码错误
可能2:指定的邮件服务器没写正确
可能3:你自己的发送邮箱没有给客户端授权(这个概率最大),这是你可以登陆网页邮箱,将自己的邮箱中客户端授权打开(这时要记住发给自己的客户端授权密码(这个只针对126邮箱,其他邮箱具体情况自己看着准备))并且记得开启SMTP,POP3,IMAP服务。这样再重新测试一次应该就可以成功了。