JavaEmail做邮件发送

备注:本例子已QQ邮箱发送为例(邮件发送要用线程不然网站会很慢);

使用先邮箱设置:先开启邮箱 Pop3Smtp服务获取授权码

怎么获取授权码?

先进入设置-》帐户页面找到入口,按照以下流程操作。

JavaEmail做邮件发送_第1张图片

依赖jar包:javax.mail 1.4.4

package external.email;


import java.security.GeneralSecurityException;

import java.util.Properties;

import javax.mail.Authenticator;

import javax.mail.Message.RecipientType;

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;

import com.sun.mail.util.MailSSLSocketFactory;

public class JavaEmailApi {

private static String SendEmailAccount ="[email protected]";

private static String Pop3SmtpKey ="xxxxxxxxxxx";

public static void SendEmail(String recipientAccount,String subject,String content){

//跟smtp服务器建立一个连接

Properties p = new Properties();

//设置邮件服务器主机名

p.setProperty("mail.host", "smtp.qq.com");//指定邮件服务器,默认端口号25

//发送服务器需要身份证验证

p.setProperty("mail.smtp.auth", "true");//要采用指定用户名密码的方式去认证

//发送邮件协议名称

p.setProperty("mail.transport.protocol", "smtp");

//开启SSL加密,否则会失败

MailSSLSocketFactory sf = null;

try {

sf = new MailSSLSocketFactory();

} catch (GeneralSecurityException e1) {

e1.printStackTrace();

}

sf.setTrustAllHosts(true);

p.put("mail.smtp.ssl.enable", "true");

p.put("mail.smtp.ssl.socketFactory", sf);

//开启debug调试,以便在控制台查看

// session.setDebug(true);也可以这样设置

// p.setProperty("mail.debug", "true");

//创建session

Session session = Session.getDefaultInstance(p, new Authenticator() {

@Override

protected PasswordAuthentication getPasswordAuthentication() {

//用户名可以用QQ账号也可以用邮箱的别名

PasswordAuthentication pa = new PasswordAuthentication(SendEmailAccount, Pop3SmtpKey);

//后面的字符是授权码,用qq密码不行!!

return pa;

}

});

//session.setDebug(true);//设置打开调试状态

try {

//声明一个Message对象(代表一封邮件),从session中创建

MimeMessage msg = new MimeMessage(session);

//邮件信息封装

// 1发件人

msg.setFrom(new InternetAddress(SendEmailAccount));

// 2收件人

msg.setRecipient(RecipientType.TO, new InternetAddress(recipientAccount));

// 3邮件内容:主题、内容

msg.setSubject(subject);

// StringBuilder是线程不安全的,但是速度快,这里因为只会有这个线程来访问,所以可以用这个

/*StringBuilder sbd = new StringBuilder();

sbd.append("[email protected]
欢迎!请确认此邮件地址以激活您的账号。
");

sbd.append("

sbd.append(">立即激活
");

sbd.append("或者点击下面链接:
");

sbd.append("http://192.168.1.102:8080/myMailWeb/ActiveServlet?acode=111111
");

sbd.append("这是一封自动发送的邮件;如果您并未要求但收到这封信件,您不需要进行任何操作。");

//msg.setContent(sbd.toString(), "text/html;charset=utf-8");//发html格式的文本

msg.setContent(content, "text/html;charset=utf-8");//发html格式的文本

*///发送动作

Transport.send(msg);

//System.out.println("给[email protected]发送邮件成功。");

} catch (AddressException e) {

e.printStackTrace();

} catch (MessagingException e) {

e.printStackTrace();

}

}

}

你可能感兴趣的:(JavaEmail做邮件发送)