一开始只是在子工程中简单导入jar包(mail;activation)。页面测试发送邮件测试的时候就报错了:java.lang.NoClassDefFoundError: javax/mail/Message
原因:tomcat启动的时候,tomcat的lib文件夹下其实并没有这两个jar包;所以我们需要手动在tomcat的lib文件下导入这两个jar包,导入后就能成功执行。
已下是邮件发送工具类:
修改以下就可使用
ts.connect("smtp.qq.com", "QQ", "密钥");
message.setFrom(new InternetAddress("QQ"));
package Uitl;
import java.security.GeneralSecurityException;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;
public class SendEamil {
public static Properties prop;
public static MailSSLSocketFactory sf;
public static Session session;
public static Transport ts;
public static MimeMessage message;
static {
prop = new Properties();
//设置QQ服务器
prop.setProperty("mail.host", "smtp.qq.com");
//邮件发送协议
prop.setProperty("mail.transport.protocol", "smtp");
//需要验证用户名密码
prop.setProperty("mail.smtp.auth", "true");
//关于QQ邮箱,还要设置SSL加密,加上以下代码即可
try {
sf = new MailSSLSocketFactory();
} catch (GeneralSecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
//使用JavaMail发送邮件的5个步骤
//1.txt、创建定义整个应用程序所需的环境信息的Session对象
session = Session.getDefaultInstance(prop);
//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
//2、通过session得到transport对象
try {
ts = session.getTransport();
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//3、使用邮箱的用户名和授权码连上邮件服务器
try {
ts.connect("smtp.qq.com", "xxxx@qq.com", "xxxx");
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//4,创建邮件
//4-1.txt,创建邮件对象
message = new MimeMessage(session);
//4-2,指明邮件的发件人
try {
message.setFrom(new InternetAddress("xxxxx"));
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//4-4,邮件标题
try {
message.setSubject("简易版美团外卖");
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void send(String QQ,String VFCode) {
//4-3,指明邮件的收件人
try {
message.setRecipient(Message.RecipientType.TO, new InternetAddress(QQ));
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//4-5,邮件文本内容
try {
message.setContent(VFCode, "text/html;charset=UTF-8");
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//4-6,发送邮件
try {
ts.sendMessage(message, message.getAllRecipients());
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//5,关闭连接
// try {
// ts.close();
// } catch (MessagingException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
}
}



