用javamail发邮件

利用javamail发邮件,可以发送普通邮件,带附件和图片的邮件:
package util.mail;
import java.util.Date;
import java.util.HashSet;
import java.util.Properties;
import java.util.ResourceBundle;
import java.util.Set;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
/**
* @author Lee
*
* 需要jaf-1_1_1及javamail-1_4_1的支持
*
*/
public class MailUtil {
private static Session session;
private static Transport sender;

private MailUtil(){
}

public static void createSession(){
if(session==null){
String protocol=ResourceBundle.getBundle("mail").getString("mail.transport.protocol");
String auth=ResourceBundle.getBundle("mail").getString("mail.smtp.auth");
boolean debug=Boolean.parseBoolean(ResourceBundle.getBundle("mail").getString("debug"));

createSession(protocol,auth,debug);
}
}

/**
*
* @param protocol
* @param auth
* @param Debug
* 用于创建发送邮件的配置类需要协议,是否认证,是否显示信息
*/
public static void createSession(String protocol,String auth,boolean Debug){
Properties props=new Properties();
props.setProperty("mail.transport.protocol",protocol);
props.setProperty("mail.smtp.auth",auth);

session=Session.getInstance(props);

session.setDebug(Debug);
}

/**
*
* @param from 发送人的地址
* @param to 接受人的地址
* @param title 标题
* @param body 邮件内容
* @param date 发送日期
* @return 返回邮件信息
* @throws AddressException
* @throws MessagingException
* 用于发送文本信息
*/
public static MimeMessage createTextMail(String from,String to,String title,String body,Date date) throws AddressException, MessagingException{
MimeMessage mail=new MimeMessage(session);

mail.setFrom(new InternetAddress(from));
mail.setRecipient(Message.RecipientType.TO,new InternetAddress(to));
mail.setSentDate(date);
mail.setSubject(title);
mail.setText(body);
mail.saveChanges();

return mail;
}

/**
*
* @param from
* @param to
* @param title
* @param body
* @param date
* @return 返回邮件信息
* @throws AddressException
* @throws MessagingException
* 用于发送html邮件
*/
public static MimeMessage createHtmlMail(String from,String to,String title,String body,Date date) throws AddressException, MessagingException{
MimeMessage mail=createTextMail(from,to,title,body,date);
mail.setContent(body,"text/html;charset=gb2312");
mail.saveChanges();
return mail;
}

/**
*
* @param from
* @param to
* @param title
* @param body
* @param date
* @param filenames
* @param imgnames
* @return 返回邮件信息
* @throws AddressException
* @throws MessagingException
* 创建带图片和附件的邮件
*/
public static MimeMessage createMultiMail(String from,String to,String title,String body,Date date,String[] filenames,String[] imgnames) throws AddressException, MessagingException{
MimeMessage mail=createHtmlMail(from,to,title,body,date);

MimeMultipart allMultipart=new MimeMultipart("mixed");

MimeMultipart contentMulti=new MimeMultipart("related");
MimeBodyPart contentPart=new MimeBodyPart();

MimeBodyPart htmlBody=new MimeBodyPart();

htmlBody.setContent(body,"text/html;charset=gb2312");

contentMulti.addBodyPart(htmlBody);

if(imgnames!=null){
for(MimeBodyPart part:createImgAttachment(imgnames)){
contentMulti.addBodyPart(part);
}
}

contentPart.setContent(contentMulti);
allMultipart.addBodyPart(contentPart);

if(filenames!=null){
for(MimeBodyPart part:createAttachment(filenames)){
allMultipart.addBodyPart(part);
}
}

mail.setContent(allMultipart);

mail.saveChanges();
return mail;
}

/**
*
* @param server 服务器
* @param user 用户
* @param pass 密码
* @return
* @throws MessagingException
* 建立邮件发送类
*/
public static Transport createSender(String server,String user,String pass) throws MessagingException{
sender=session.getTransport();
sender.connect(server,user,pass);

return sender;
}

public static Transport createSender() throws MessagingException{
if(sender==null){
String server=ResourceBundle.getBundle("mail").getString("server");
String user=ResourceBundle.getBundle("mail").getString("user");
String pass=ResourceBundle.getBundle("mail").getString("pass");

return createSender(server,user,pass);
}
return sender;
}

public static void send(MimeMessage mail) throws MessagingException{
createSession();
createSender();
sender.sendMessage(mail,mail.getRecipients(Message.RecipientType.TO));
}

public static void closeSender() throws MessagingException{
if(sender.isConnected())sender.close();
sender=null;
session=null;
}

public static Set<MimeBodyPart> createAttachment(String[] filenames) throws MessagingException{
Set<MimeBodyPart> attachments=new HashSet<MimeBodyPart>();
for(int i=0;i<filenames.length;i++){
MimeBodyPart attachment=new MimeBodyPart();
FileDataSource fds=new FileDataSource(filenames);
attachment.setDataHandler(new DataHandler(fds));
attachment.setFileName(filenames.substring(filenames.lastIndexOf("\\")+1));
attachments.add(attachment);
}
return attachments;
}

public static Set<MimeBodyPart> createImgAttachment(String[] imgnames) throws MessagingException{
Set<MimeBodyPart> attachments=new HashSet<MimeBodyPart>();
for(int i=0;i<imgnames.length;i++){
MimeBodyPart attachment=new MimeBodyPart();
FileDataSource fds=new FileDataSource(imgnames);
attachment.setDataHandler(new DataHandler(fds));
attachment.setFileName(imgnames.substring(imgnames.lastIndexOf("\\")+1));
attachment.setContentID(imgnames.substring(imgnames.lastIndexOf("\\")+1));
attachments.add(attachment);
}
return attachments;
}

public static void main(String[] args) throws AddressException, MessagingException{
MailUtil.send(MailUtil.createMultiMail("azure2a@163.com","azure2a@163.com","测试","<b>测试邮件<img src=\"cid:a.jpg\"></b>",new Date(),new String[]{"D:\\Java\\a.txt","D:\\Java\\a.jpg"},new String[]{"D:\\Java\\a.jpg"}));
MailUtil.send(MailUtil.createMultiMail("azure2a@163.com","azure2aa@sina.com","测试","<b>测试邮件<img src=\"cid:a.jpg\"></b>",new Date(),new String[]{"D:\\Java\\a.txt","D:\\Java\\a.jpg"},new String[]{"D:\\Java\\a.jpg"}));
MailUtil.closeSender();
}
}

配置文件
mail.properties
server=smtp.163.com
user=azure2a
pass=
mail.transport.protocol=smtp
mail.smtp.auth=true
debug=true
潮汐研究作为海洋科学的关键分支,融合了物理海洋学、地理信息系统及水利工程等多领域知识。TMD2.05.zip是一套基于MATLAB环境开发的潮汐专用分析工具集,为科研人员与工程实践者提供系统化的潮汐建模与计算支持。该工具箱通过模块化设计实现了两大核心功能: 在交互界面设计方面,工具箱构建了图形化操作环境,有效降低了非专业用户的操作门槛。通过预设参数输入模块(涵盖地理坐标、时间序列、测站数据等),用户可自主配置模型运行条件。界面集成数据加载、参数调整、可视化呈现及流程控制等标准化组件,将复杂的数值运算过程转化为可交互的操作流程。 在潮汐预测模块中,工具箱整合了谐波分解法与潮流要素解析法等数学模型。这些算法能够解构潮汐观测数据,识别关键影响要素(包括K1、O1、M2等核心分潮),并生成不同时间尺度的潮汐预报。基于这些模型,研究者可精准推算特定海域的潮位变化周期与振幅特征,为海洋工程建设、港湾规划设计及海洋生态研究提供定量依据。 该工具集在实践中的应用方向包括: - **潮汐动力解析**:通过多站点观测数据比对,揭示区域主导潮汐成分的时空分布规律 - **数值模型构建**:基于历史观测序列建立潮汐动力学模型,实现潮汐现象的数字化重构与预测 - **工程影响量化**:在海岸开发项目中评估人工构筑物对自然潮汐节律的扰动效应 - **极端事件模拟**:建立风暴潮与天文潮耦合模型,提升海洋灾害预警的时空精度 工具箱以"TMD"为主程序包,内含完整的函数库与示例脚本。用户部署后可通过MATLAB平台调用相关模块,参照技术文档完成全流程操作。这套工具集将专业计算能力与人性化操作界面有机结合,形成了从数据输入到成果输出的完整研究链条,显著提升了潮汐研究的工程适用性与科研效率。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值