Java实现像QQ邮箱发送邮件,并规定邮件样式为富文本格式
163邮箱的发送案例也一并奉上—
话不多说,直接上代码。。。。
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.IOException;
import java.util.Properties;
public class test {
//QQ邮箱
/**
* fa 发件人邮箱
* shou 收件人邮箱
* imap QQ邮箱开通的stmp服务后得到的客户端授权码
*
*/
public static void qqEmail(String fa, String imap, String shou) throws 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);
try {
// 设置邮件标题
message.setSubject("您好,CSDN", "UTF-8");
// 设置邮件内容
String text = "<table cellpadding=\"0\" align=\"center\" cellspacing=\"0\" style=\"width:100%;table-layout:fixed;height:344px;background:#FFFFFF\" class=\"i\" unselectable=\"on\"><tbody><tr><td style=\"text-align: left; font-family: 黑体; font-size: 24px;\" valign=\"top\" id=\"QQMAILSTATIONERY\">您好,您的验证码是:123456</td></tr><tr><td style=\"height:10px;\"></td></tr></tbody></table>";
message.setContent(text, "text/html;charset=UTF-8");
// 设置发件人邮箱地址
message.setFrom(new InternetAddress(fa));
// 设置收件人邮箱地址
message.setRecipient(Message.RecipientType.TO, new InternetAddress(shou));
// 得到邮差对象
Transport transport = session.getTransport();
// 连接自己的邮箱账户
transport.connect(fa, imap);
// 发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
return "success";
} catch (MessagingException | UnknownHostException e) {
String msg = "发送失败";
return msg;
}
}
//163邮箱
public static void wyEmail() throws MessagingException, IOException {
String HOST = "***.163.com"; // smtp服务器
String FROM = "*****9@163.com"; // 发件人地址
String TO = "*****763@qq.com"; // 收件人地址
String USER = "*****9@163.com"; // 用户名
String PWD = "W********RDYHDQ"; // 163的授权码
String SUBJECT = "验证码"; // 邮件标题
String[] TOS = {TO};
Properties props2 = new Properties();
props2.put("mail.smtp.host", HOST);//设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
props2.put("mail.smtp.auth", "true"); //需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)
Session session = Session.getDefaultInstance(props2);//用props对象构建一个session
session.setDebug(true);
MimeMessage message = new MimeMessage(session);//用session为参数定义消息对象
try {
message.setFrom(new InternetAddress(FROM));// 加载发件人地址
InternetAddress[] sendTo = new InternetAddress[TOS.length]; // 加载收件人地址
for (int i = 0; i < TOS.length; i++) {
sendTo[i] = new InternetAddress(TOS[i]);
}
message.addRecipients(Message.RecipientType.TO,sendTo);
message.addRecipients(MimeMessage.RecipientType.CC, InternetAddress.parse(FROM));//设置在发送给收信人之前给自己(发送方)抄送一份,不然会被当成垃圾邮件,报554错
message.setSubject(SUBJECT);//加载标题
Multipart multipart = new MimeMultipart();//向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
BodyPart contentPart = new MimeBodyPart();//设置邮件的文本内容
int num = (int) ((Math.random() * 9 + 1) * 100000);
contentPart.setText(String.valueOf(num));
multipart.addBodyPart(contentPart);
message.setContent(multipart);//将multipart对象放到message中
message.saveChanges(); //保存邮件
Transport transport = session.getTransport("smtp");//发送邮件
transport.connect(HOST, USER, PWD);//连接服务器的邮箱
transport.sendMessage(message, message.getAllRecipients());//把邮件发送出去
transport.close();//关闭连接
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws MessagingException, IOException {
//QQ邮箱
String fa = "******63@qq.com";
String imap = "******da";
String shou = "*****9@163.com";
qqEmail(fa, imap, shou);
//163邮箱
//wyEmail();
}
}