package com.example.demo;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
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.*;
import java.security.Security;
import java.util.Properties;
@SpringBootApplication
public class SendMailFinal {
public SendMailFinal() {
}
public static void CreateMessage(String zhuti,final Session session, String from,final String[] to,String[] copyto,final String sourcePath) throws MessagingException {
try{
final String subjectStr=zhuti;//主题
final StringBuffer contentStr=new StringBuffer();//内容
//创建默认的 MimeMessage 对象
final MimeMessage message = new MimeMessage(session);
// 设置发件人
message.setFrom(new InternetAddress(from));
// 设置收件人
if (to != null && to.length > 0) {
String toListStr = getMailList(to);
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toListStr));
}
//Set Subject: 头部头字段
message.setSubject(subjectStr);
//创建消息部分
final BodyPart messageBodyPart = new MimeBodyPart();
//消息
messageBodyPart.setContent(contentStr.toString(),"text/html;charset=UTF-8");
//创建多重消息
final Multipart multipart = new MimeMultipart();
//设置文本消息部分
multipart.addBodyPart(messageBodyPart);
//为邮件添加多个附件
MimeBodyPart attachment = null;
final File source = new File(sourcePath);
if (!source.exists()) {
System.out.println(sourcePath + " not exists");
return;
}
final File[] files = source.listFiles();
for (final File f : files) {
attachment = new MimeBodyPart();
final String filePath =f.getPath();
//根据附件文件创建文件数据源
final DataSource ds = new FileDataSource(filePath);
attachment.setDataHandler(new DataHandler(ds));
//为附件设置文件名
attachment.setFileName(ds.getName());
multipart.addBodyPart(attachment);
}
// 设置抄送人
if (copyto != null && copyto.length > 0) {
String ccListStr = getMailList(copyto);
message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(ccListStr));
}
// 发送完整消息
message.setContent(multipart);
// 发送消息
Transport.send(message);
}catch (final MessagingException mex) {
mex.printStackTrace();
}
}
public static String getMailList(String[] mailArray) {
StringBuffer toList = new StringBuffer();
int length = mailArray.length;
if (mailArray != null && length < 2) {
toList.append(mailArray[0]);
} else {
for (int i = 0; i < length; i++) {
toList.append(mailArray[i]);
if (i != (length - 1)) {
toList.append(",");
}
}
}
return toList.toString();
}
/**
*
* @param args
* @throws FileNotFoundException
* @throws MessagingException
*/
public static void main(final String[] args) throws FileNotFoundException, MessagingException {
String zhuti=args[0];
//发件人的 邮箱 和 密码
final String fromAccount =args[1] ;
final String fromPassword =args[2] ;
//指定发送邮件的主机
final String host = "smtp.163.com";
//收件人
String toUrl=args[3];
String[] to= toUrl.split(",");
//抄送人
String copy=args[4];
String[] copyto = copy.split(",");
//创建参数配置, 获取系统属性
final Properties properties = System.getProperties();
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
properties.setProperty("mail.transport.protocol", "smtp");
properties.setProperty("mail.smtp.socketFactory.fallback", "false");
properties.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
//传统的25端口已经不能再用 需要改成465
properties.setProperty("mail.smtp.port", "465");
properties.setProperty("mail.smtp.socketFactory.port", "465");
properties.setProperty("mail.smtp.host", host);
properties.put("mail.smtp.auth", "true");
//根据配置创建会话对象,获取默认session对象
final Session session = Session.getDefaultInstance(properties,new Authenticator(){
@Override
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(fromAccount, fromPassword); //发件人邮件用户名、密码
}
});
session.setDebug(true);
final String xmlPath=args[5];
CreateMessage(zhuti,session,fromAccount,to,copyto,xmlPath);
}
}
用java写一个发送邮件的小组件
最新推荐文章于 2024-06-30 08:15:00 发布