首先需要加入以下jar包
然后运行代码
package com.liang.tiezi;
import java.sql.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class SendMail {
public static void main(String[] args) {
SendMail.sendAccountActivateEmail();
}
/**
*
*/
public static void sendAccountActivateEmail() {
Session session = getSession();
MimeMessage message = new MimeMessage(session);
try {
message.setSubject("帐户激活邮件"); //邮件标题
message.setSentDate(new Date(0)); //时间
message.setFrom(new InternetAddress("1135409377@qq.com")); //发件人邮箱
message.setRecipient(RecipientType.TO, new InternetAddress("652791205@qq.com")); //收件人信息
// message.setContent("<a href='http://localhost:9876'><font>欢迎您注册语录社,点击此链接进行激活。</font></a>","text/html;charset=utf-8");
message.setContent("hello gril","text/html;charset=utf-8");//邮件内容,可以使超链接,可以使纯文本
//发送邮件
Transport.send(message);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Session getSession() {
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", "smtp.qq.com");
props.put("mail.smtp.localhost", "localHostAddress");
props.setProperty("mail.smtp.port", "25");
props.setProperty("mail.smtp.auth", "true");
// Session session = Session.getDefaultInstance(props);
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
String password = "liangpengxdnovo";//发件人邮箱密码
// InputStream is = EmailUtils.class.getResourceAsStream("password.dat");
// byte[] b = new byte[1024];
// try {
// int len = is.read(b);
// password = new String(b,0,len);
// } catch (IOException e) {
// e.printStackTrace();
// }
return new PasswordAuthentication("1135409377@qq.com", password); //发件人邮箱,发件人邮箱密码。
}
});
return session;
}
}
这时会报错,提示
java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream解决办法 (摘自此链接)
在编写邮件发送相关程序时,会报错!
主要原因是
javax.mail和javax.activation这两个包已经在javaEE5当中属于基础包了,就是JDK中自带了已经,但是里面的方法与现在外面的mail.jar和activation.jar有一些出入,所以初学者在直接copy别人代码的时候往往会出现上面的错误。
废话不多说下面是解决方法
进到
X:/Program Files/MyEclipse 6.5/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5
这个路径里,可以看到javaee.jar,用rar把这个文件打开,然后进到javax文件夹里,删除mail.jar和activation.jar(我的javaee.jar里,这两个东西是文件夹,总之删掉就OK,不过要注意备份一下)
删掉之后运行下面的代码,经行简单的修改以后就可以实现接收邮件的功能了!我已经测试过完全可行。