java 获取表单信息,通过smtp协议发送邮件(用户名密码发送,不用授权码)
这个用户名密码,不用授权码
public void handleEvent(EventExecutionContext execution, String parameter) throws Exception {
KmReviewMain mainModel = (KmReviewMain) execution.getMainModel();
//收件人邮箱地址
String recipientEmail =(String) mainModel.getExtendDataModelInfo().getModelData().get("recipientEmail");
//发件人邮箱地址
final String senderEmail =(String) mainModel.getExtendDataModelInfo().getModelData().get("senderEmail");
//发件人邮箱密码
final String sendEmailPass =(String) mainModel.getExtendDataModelInfo().getModelData().get("sendEmailPass");
//接受邮件主题
String themeWords =(String) mainModel.getExtendDataModelInfo().getModelData().get("themeWords");
//邮件内容
String emailcontent =(String) mainModel.getExtendDataModelInfo().getModelData().get("emailcontent");
//附件名称
String fujianName="";
//附件存储路径
String fujiandizhi = "/app/resource";
ISysAttMainCoreInnerService sysAttMainService = (ISysAttMainCoreInnerService) SpringBeanUtil.getBean("sysAttMainService");
@SuppressWarnings("unchecked")
List<SysAttMain> sysAttMainList = (List<SysAttMain>) sysAttMainService.findByModelKey(KmReviewMain.class.getName(), mainModel.getFdId(), "sendemailandattachkey");
if(sysAttMainList!=null&&sysAttMainList.size()>0){
SysAttMain sysAttMain = sysAttMainList.get(0);
fujianName = sysAttMain.getFdFileName();
String in = SysAttViewerUtil.getMediaFilePath(sysAttMain);
fujiandizhi+=in;
}
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
//发邮件人邮箱
javaMailSender.setUsername(senderEmail);
//发邮件人邮箱密码(默认使用客户端的授权码)
javaMailSender.setPassword(sendEmailPass);
//设置邮件服务器主机名 SMTP服务器地址
javaMailSender.setHost("mail.boshi.cn");
//SMTP服务器: 默认端口 换成腾讯云服务器后,需要将端口换成465
//javaMailSender.setPort(465);
javaMailSender.setPort(25);
发送邮件协议名称
javaMailSender.setProtocol("smtp");
//编码格式
javaMailSender.setDefaultEncoding("UTF-8");
//创建连接对象,连接到邮箱服务器
Properties mailProperties = new Properties();
//发送服务器需要身份验证,要采用指定用户名密码的方式去认证
mailProperties.put("mail.smtp.auth", true);
mailProperties.put("mail.smtp.starttls.enable", true);
//添加连接对象到邮件对象中
javaMailSender.setJavaMailProperties(mailProperties);
try {
// 得到默认的对话对象
Authenticator a = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(senderEmail, sendEmailPass);
}
};
MimeMessage message = getMimeMessage(mailProperties,a,senderEmail,fujianName, recipientEmail, themeWords, emailcontent, fujiandizhi);
javaMailSender.send(message);
// 发送消息
// Transport.send(message);
logger.warn("-----------------------邮件发送成功-------------------");
} catch (Exception e) {
e.printStackTrace();
logger.error("-----------------------邮件发送失败--------------------");
}
}
private MimeMessage getMimeMessage(Properties props,Authenticator a ,String from,String fromEmail, String receive, String subject, String msg, String filename) throws MessagingException, UnsupportedEncodingException {
// 创建默认的 MimeMessage 对象
//创建Session实例
Session session = Session.getDefaultInstance(props, a);
session.setDebug(true);
//创建MimeMessage实例对象
MimeMessage message=new MimeMessage(session);
//设置自定义发件人昵称
String nick="";
try {
// nick=javax.mail.internet.MimeUtility.encodeText("luminescience");
if(StringUtil.isNotNull(fromEmail)){
//nick=javax.mail.internet.MimeUtility.encodeText(fromEmail);
nick=javax.mail.internet.MimeUtility.encodeText(subject);
}
} catch (Exception e) {
e.printStackTrace();
}
message.setFrom(new InternetAddress(nick+" <"+from+">"));
// Set From: 头部头字段
// message.setFrom(new InternetAddress(from));
// Set To: 头部头字段
message.addRecipient(Message.RecipientType.TO, new InternetAddress(receive));
// Set Subject: 主题文字
message.setSubject(subject);
// 创建消息部分
BodyPart messageBodyPart = new MimeBodyPart();
// 消息
messageBodyPart.setText(msg);
// 创建多重消息
Multipart multipart = new MimeMultipart();
// 设置文本消息部分
multipart.addBodyPart(messageBodyPart);
// 设置要发送附件的文件路径
if(StringUtil.isNotNull(filename)){
// 附件部分
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
// 处理附件名称中文(附带文件路径)乱码问题
messageBodyPart.setFileName(MimeUtility.encodeText(fromEmail));
multipart.addBodyPart(messageBodyPart);
}
// 发送完整消息
message.setContent(multipart);
return message;
}