“细雨梦回鸡塞远,小楼吹彻玉笙寒”
序
现在做的项目有做到流程审批,到下一节点时,会给节点的负责人发送邮件通知。流程都是手写的代码,没有用到流程引擎。
正文
其实通过QQ邮箱或者163邮箱发邮件,代码都是一样的,区别只是这两个邮箱用的协议不一样。这里我用两个方法分别记录通过163和QQ邮箱发送邮件的例子。
通过QQ邮箱
//参数是收件人地址
public static void sendMail(String addressee) throws AddressException, MessagingException {
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");// 连接协议
properties.put("mail.smtp.host", "smtp.qq.com");// 主机名
properties.put("mail.smtp.port", 465);// 端口号
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.ssl.enable", "true");// 设置是否使用ssl安全连接 ---一般都使用
properties.put("mail.debug", "true");// 设置是否显示debug信息 true 会在控制台显示相关信息
// 得到会话对象
Session session = Session.getInstance(properties);
// 获取邮件对象
Message message = new MimeMessage(session);
// 设置发件人邮箱地址
message.setFrom(new InternetAddress("xxx@qq.com"));
// 设置收件人邮箱地址
message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress(addressee)});
// 设置邮件标题
message.setSubject("您有新的流程工单需要处理!");
// 设置邮件内容
message.setText("尊敬的XXX,您有新的流程需要处理,请及时处理!请勿回复此邮件。");
// 得到邮差对象
Transport transport = session.getTransport();
// 连接自己的邮箱账户
transport.connect("xxx@qq.com", "xxx");// 密码为QQ邮箱开通的stmp服务后得到的客户端授权码
// 发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
通过163邮箱发送
//参数是收件人地址
public static void sendMail(String addressee) throws AddressException, MessagingException {
// 发件人账号和密码
String MY_EMAIL_ACCOUNT = "xxx@163.com";
String MY_EMAIL_PASSWORD = "xxx";// 密码,是你自己的设置的授权码
// SMTP服务器(这里用的163 SMTP服务器)
String MEAIL_163_SMTP_HOST = "smtp.163.com";
String SMTP_163_PORT = "25";// 端口号,这个是163使用到的;QQ的应该是465或者875
// 收件人
String RECEIVE_EMAIL_ACCOUNT = addressee;
Properties p = new Properties();
p.setProperty("mail.smtp.host", MEAIL_163_SMTP_HOST);
p.setProperty("mail.smtp.port", SMTP_163_PORT);
p.setProperty("mail.smtp.socketFactory.port", SMTP_163_PORT);
p.setProperty("mail.smtp.auth", "true");
p.setProperty("mail.smtp.socketFactory.class", "SSL_FACTORY");
Session session = Session.getInstance(p, new Authenticator() {
// 设置认证账户信息
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(MY_EMAIL_ACCOUNT, MY_EMAIL_PASSWORD);
}
});
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
// 发件人
message.setFrom(new InternetAddress(MY_EMAIL_ACCOUNT));
// 收件人
message.setRecipients(Message.RecipientType.TO, RECEIVE_EMAIL_ACCOUNT);
//抄送人
message.setRecipients(Message.RecipientType.CC, MY_EMAIL_ACCOUNT);
//主题
message.setSubject("流程工单");
// 内容
message.setContent("您好,您有新的流程需要处理!", "text/html;charset=UTF-8");
message.setSentDate(new Date());
message.saveChanges();
Transport.send(message);
}