业务场景
在公司内部的linux主机上,通过shell调用java application来连接公司的邮件服务器,进行邮件发送
实现方式
1>通过shell读取ini文件中的配置参数,并export成系统环境变量,然后调用java程序
2>java程序里读取环境变量进行邮件发送
mail.ini
MAIL_HOST="192.168.1.21" MAIL_FROM="system@xxx.com" MAIL_TO_USERS="user1@xxx.com" MAIL_CC_USERS="user2@xxx.com,user3@xxx.com" MAIL_ATTACH_PATH="/application/attach"
mail.sh
#!/bin/sh while read line;do eval "$line" done < mail.ini export MAIL_HOST=$MAIL_HOST export MAIL_FROM=$MAIL_FROM export MAIL_TO=$MAIL_TO_USERS export MAIL_CC=$MAIL_CC_USERS export MAIL_SUBJECT="hello" export MAIL_CONTENT="good morning!" export MAIL_ATTACHMENT=$MAIL_ATTACH_PATH java -jar mailer.jar RETCODE=$? if [ $RETCODE -eq 0 ]; then exit 0 else exit 2 fi
Mailer.java
import java.io.File; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.NoSuchProviderException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMultipart; public class Mailer { private String mailHost; private String mailFrom; private String mailTo; private String mailCc; private String mailSubject; private String mailContent; private String mailAttachmentPath; private String mailAttachmentFile; private final String MAIL_CONTENT="text/html;charset=shift_jis"; private static int returnCode; public Mailer(){ this.mailHost = System.getenv("MAIL_HOST"); this.mailFrom = System.getenv("MAIL_FROM"); this.mailTo = System.getenv("MAIL_TO"); this.mailCc = System.getenv("MAIL_CC"); this.mailSubject = System.getenv("MAIL_SUBJECT"); this.mailContent = System.getenv("MAIL_CONTENT"); this.mailAttachmentPath = System.getenv("MAIL_ATTACHMENT"); } public void sendMail() throws MessagingException{ Properties prop = new Properties(); prop.setProperty("mail.host",this.mailHost); prop.setProperty("mail.transport.protocol","smtp"); prop.setProperty("mail.smtp.auth","false"); Session session = Session.getInstance(prop); Transport transport = null; try { transport = session.getTransport(); transport.connect(); if(transport.isConnected()){ System.out.println("Connected successfully!"); } Message message = null; this.mailAttachmentFile = this.getAttachment(); if(!"".equals(this.mailAttachmentFile)){ message = this.createAttachMail(session); } else { message = this.createSimpleMail(session); } transport.sendMessage(message,message.getAllRecipients()); } catch (NoSuchProviderException e) { throw e; } catch (MessagingException e) { throw e; } finally { try { if(transport.isConnected()){ transport.close(); } System.out.println("Disconnected successfully!"); } catch (MessagingException e) { throw e; } } } private MimeMessage createSimpleMail(Session session) throws AddressException, MessagingException{ MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(mailFrom)); message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(mailTo)); if(mailCc != null && !"".equals(mailCc)){ message.setRecipients(Message.RecipientType.CC,InternetAddress.parse(mailCc)); } message.setSubject(mailSubject); message.setContent(mailContent, MAIL_CONTENT); return message; } private MimeMessage createAttachMail(Session session) throws AddressException, MessagingException{ MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(mailFrom)); message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(mailTo)); if(mailCc != null && !"".equals(mailCc)){ message.setRecipients(Message.RecipientType.CC,InternetAddress.parse(mailCc)); } message.setSubject(mailSubject); MimeBodyPart text = new MimeBodyPart(); text.setContent(mailContent, MAIL_CONTENT); MimeBodyPart attach = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource(this.mailAttachmentFile)); attach.setDataHandler(dh); attach.setFileName(dh.getName()); MimeMultipart mp = new MimeMultipart(); mp.addBodyPart(text); mp.addBodyPart(attach); mp.setSubType("mixed"); message.setContent(mp); message.saveChanges(); return message; } private String getAttachment(){ if(this.mailAttachmentPath != null && !"".equals(this.mailAttachmentPath)){ File file = new File(this.mailAttachmentPath); File[] fileArray = file.listFiles(); if(1 == fileArray.length){ return fileArray[0].getAbsolutePath(); } if( 0 == fileArray.length){ return ""; } long newTime = 0; int newIndex = 0; for(int i=0; i < fileArray.length; i++){ long curTime = fileArray[i].lastModified(); if(curTime > newTime){ newTime = curTime; newIndex = i; } } return fileArray[newIndex].getAbsolutePath(); } return ""; } public static void main(String[] args){ try { Mailer mailer = new Mailer(); mailer.sendMail(); returnCode = 0; } catch (Exception e) { returnCode = 1; } finally { System.exit(returnCode); } } }
相关推荐
在你提供的压缩包文件中,包含了三个关键元素:activation.jar、mail.jar以及SendMail.java,这些都是Java Mail发邮件所需的基本组件。 `activation.jar` 是JavaBeans Activation Framework (JAF) 的一部分,它是...
Java Mail 发送邮件及邮件附件 Java Mail 是一个广泛使用的 Java 库,用于发送电子邮件。以下是 Java Mail 发送邮件及邮件附件的知识点。 Java Mail 简介 Java Mail 是一个 Java 库,提供了发送电子邮件的功能。...
### Java Mail 发送邮件知识点详解 #### 一、概述 Java Mail API 是一个用于发送与接收电子邮件的标准 Java 库,支持多种协议如 SMTP (Simple Mail Transfer Protocol) 和 POP3 (Post Office Protocol version 3) ...
Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。在Java应用程序中,我们通常使用JavaMail API来实现邮件的自动化操作,比如发送带有附件的邮件、群发邮件等。下面将...
Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和操作邮件。这个API提供了广泛的协议支持,包括SMTP(简单邮件传输协议)用于发送邮件,POP3和IMAP4用于接收邮件。在Java Mail中,...
利用Java mail发送邮件,用到的一些类,一些方法,写的很简陋
要使用Java Mail发送邮件,首先需要添加相应的依赖库到项目中。对于Android项目,通常会通过Gradle来引入。 1. 添加依赖: 在项目的build.gradle文件中,添加以下依赖: ```groovy dependencies { ...
下面我们将详细探讨Java Mail发送邮件脚本的核心知识点,以及在实际操作中可能需要的Jar包。 1. **JavaMail API**:JavaMail API是Java中处理电子邮件的标准库,由JavaMail项目维护。它提供了一系列接口和类,包括`...
这个“java mail 发邮件 demo程序”是为了演示如何使用JavaMail API发送电子邮件而创建的一个简单示例。在这个DEMO程序中,我们将深入探讨JavaMail API的核心概念以及如何构建一个实际的邮件发送功能。 首先,...
这个标题“Java mail发送邮件(源代码带注释)”表明我们将讨论如何使用JavaMail API来实现电子邮件的发送功能。描述提到,通过简单的赋值和测试,我们可以快速实现邮件发送,这表明提供的源代码应该是一个易于理解且...
Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。这个源码可能包含了一套完整的解决方案,可以与多种邮局(如Gmail, Yahoo, Hotmail等)进行交互,并且支持单个收件人和...
Java Mail 是一个强大的开源API,用于处理电子邮件的发送和接收。这个API允许开发者在Java应用程序中集成邮件功能,包括SMTP(简单邮件传输协议)和POP3(邮局协议第三版)等邮件服务协议。本教程将详细介绍如何使用...
以下是一个简单的Java Mail发送邮件的示例代码: ```java import javax.mail.*; import javax.mail.internet.*; public class EmailSender { public static void main(String[] args) throws Exception { // ...
要使用Java Mail发送QQ邮件,首先需要在QQ邮箱设置中开启“POP3/SMTP/IMAP”服务,并获取授权码。授权码是QQ邮箱为第三方应用提供的一种安全验证方式,不同于普通密码。 ### 3. 添加依赖 在Java项目中,我们需要...
Java Mail邮件发送是Java开发中常见的一项功能,用于在应用程序中发送电子邮件。Java Mail API提供了一个标准的接口,使得开发者可以方便地实现SMTP(简单邮件传输协议)和其他邮件协议的功能。下面将详细介绍Java ...
下面是一个简化的Java Mail发送邮件的步骤,展示了一些关键API的使用: 1. 引入Java Mail依赖:首先确保项目中包含了Java Mail的相关库,通常通过Maven或Gradle等构建工具添加依赖。 2. 创建Properties对象:设置...