发送邮件:
(纯文字版)
jar包:mail-1.4.7.jar
首先设置配置信息
Properties props=new Properties();
props.setProperty("mail.transport.protocol", "smtp");//协议
props.setProperty("mail.smtp.host", "smtp.qq.com");//协议
props.setProperty("mail.smtp.port", "465");//协议端口
props.setProperty("mail.smpt.auth", "true");//需要授权
//SSL安全认证
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");//认证
props.setProperty("mail.smtp.socketFactory.fallback", "false");//是否允许通过认证
props.setProperty("mail.smtp.socketFactory.port", "465");//端口
设置右键Session
Session session=Session.getInstance(props);
session.setDebug(true);
设置邮件内容
MimeMessage message=new MimeMessage(session);
Address addresse=new InternetAddress(address,"name","UTF-8");
message.setFrom("XXX@qq.com");
message.setSubject("第一个标题","UTF-8");
message.setContent("主体内容","text/html;charset=utf-8" );
message.setSentDate(new Date());
RecipientType type=RecipientType.TO;//to普通 cc抄送 BCC密送
message.setRecipient(type, new InternetAddress("XXX@qq.com", "收件人", "UTF-8"));
TIPS:主体内容文字格式要与网页设置的相等。
发送邮件
Transport s=session.getTransport();
s.connect("XXX@qq.com", "XXXXXXXXX");//第二个参数为邮箱的校验码
s.sendMessage(message, message.getAllRecipients());
s.close();
发送后关闭资源。
加上图片及附件
public static MimeMessage CreateMimeMessage1(Session session,String address,String receive) throws Exception {
MimeMessage message=new MimeMessage(session);
Address addresse=new InternetAddress(address,"name","UTF-8");
message.setFrom(addresse);
message.setSubject("第一个标题","UTF-8");
//j将图片作为正文节点
MimeBodyPart imagePart=new MimeBodyPart();
DataHandler dh=new DataHandler(new FileDataSource("src/二维码.png"));
imagePart.setDataHandler(dh);
imagePart.setContentID("JV");//设置图片CID
//设置文字节点 以HTML语言为基底
MimeBodyPart TextPart=new MimeBodyPart();
TextPart.setContent("image:<image src='cid:JV'/>", "text/html; charset=utf-8");
//将图片节点与文字节点混合为复合节点,其方式为连接
MimeMultipart TEXT_IMG=new MimeMultipart();
TEXT_IMG.addBodyPart(imagePart);
TEXT_IMG.addBodyPart(TextPart);
TEXT_IMG.setSubType("related");
//将复合节点转化为单节点(正文中不允许出现复合节点)
MimeBodyPart text_img_bodypart=new MimeBodyPart();
text_img_bodypart.setContent(TEXT_IMG);
//将附件添加入节点中
MimeBodyPart filePart=new MimeBodyPart();
filePart.setDataHandler(dh);
filePart.setFileName(MimeUtility.encodeText(dh.getName()));
//将节点合并为复合节点 链接方式为混合
MimeMultipart TEXT_IMG_FILE=new MimeMultipart();
TEXT_IMG_FILE.addBodyPart(text_img_bodypart);
TEXT_IMG_FILE.addBodyPart(filePart);
TEXT_IMG_FILE.setSubType("mixed");
//带附件的可以直接使用复合节点发送
message.setContent(TEXT_IMG_FILE,"text/html;charset=utf-8" );
message.setSentDate(new Date());
RecipientType type=RecipientType.TO;//to普通 cc抄送 BCC密送
message.setRecipient(type, new InternetAddress(receive, "收件人", "UTF-8"));
return message;
}
虽然不知道为啥不能单独发图片 必须跟上附件才不会报错。有知道的大佬指点一下呗。