java文件:
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Serializable; import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; /** * @see 该类用来发送qq邮件 * @version 1.0 * */ public class EmailTool implements Serializable { public static void main(String[] args) { try { /**只要你的电脑能上网,发件人账号密码地址都正确设置,这个邮件就绝对能发出去*/ String email = "admin@163.com";// 收件人地址 String title = "找回密码";// 邮件标题 String url = "http://www.baidu.com"; String img = "http://img1.kaixin001.com.cn/i/sy_tp1_1.gif"; String templetPath = "D:\\test\\email\\findPass.txt"; String []args1 = new String[]{ "洪秀全", "hongxiuquan", email, url, url, url, img };// 邮件模板的参数设置 System.out.println(bean.sendEmail(email, title, templetPath, args1, templetPath));// 发送邮件 } catch (Exception e) { e.printStackTrace(); } } private static final long serialVersionUID = 1L; private static EmailTool bean = new EmailTool(); /** * @see 以单例模式获得javabean * @return Email * */ public static EmailTool getBean(){ return bean; } /** * @see 用QQ邮箱发邮件 * @param toEmail 收件人地址 * @param title 邮件标题 * @param templetPath 模板路径(物理路径) * @param args 模板中需要替换的值 * @param affixPath 附件的路径(物理路径,可以为null) * @return boolean * */ public Boolean sendEmail(String toEmail, String title, String templetPath, String []args, String affixPath) { Boolean result = false; try { Properties properties = new Properties(); Session session = Session.getInstance(properties, null); properties.put("mail.smtp.host", emailServerIP);// 设置服务器的IP或域名 properties.put("mail.smtp.auth", "true");// 允许smtp校验 Transport transport = session.getTransport("smtp"); transport.connect(emailServerIP, fromEmailAccount, fromEmailPassword);// 设置发件人的用户名和密码 Message message = new MimeMessage(session); message.setSubject(title);// 设置邮件主题 Address address[] = { new InternetAddress(fromEmail) };// 改变发件人地址 message.addFrom(address); message.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));// 设置收件人地址 message.setSentDate(new Date());// 设置发送时间 /**设置mail正文 ---begin*/ String content = readTemplet(templetPath);// 读取邮件模板的内容 for (int i = 0; i < args.length; i++) { content = content.replace("{" + i + "}", args[i]);// 替换模板中的占位符 } MimeMultipart multipart = new MimeMultipart(); MimeBodyPart contentPart = new MimeBodyPart(); contentPart.setDataHandler(new DataHandler(content, "text/html;charset=gbk"));// 设置正文内容 multipart.addBodyPart(contentPart);// 设置正文 if (null != affixPath && !"".equals(affixPath)) { File file = new File(affixPath); if (file.exists() && !file.isDirectory() && file.length() <= affixFileSize) {// 附件必须在10M以下 MimeBodyPart affixPart = new MimeBodyPart(); affixPart.setDataHandler(new DataHandler(new FileDataSource(affixPath)));// 读取附件 affixPart.setFileName(MimeUtility.encodeText(file.getName()));//设置附件标题 multipart.addBodyPart(affixPart);// 设置附件 } } message.setContent(multipart); /**设置mail正文---end*/ message.saveChanges();// 保存发送信息 transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));// 发送邮件 transport.close(); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } // 读模板文件(换行符为\n) private String readTemplet(String templetPath) { if (!new File(templetPath).exists()) { return ""; } try { InputStream input = new FileInputStream(templetPath); InputStreamReader read = new InputStreamReader(input, "UTF-8"); BufferedReader reader = new BufferedReader(read); String line; String result = ""; while ((line = reader.readLine()) != null) { result += line + "\n"; } reader.close(); read.close(); input.close(); return result.substring(result.indexOf("<html>")); } catch (Exception e) { e.printStackTrace(); return ""; } } /**发件人的账号密码地址必须用你自己的,而且要开通smtp服务(打开你的qq邮箱点几下就行了)*/ private String fromEmailAccount = "2457873910";// 发件人账号(qq号码) private String fromEmailPassword = "登录密码";// 发件人密码(qq密码) private String fromEmail = "2457873910@qq.com";// 发件人地址(qq邮箱) private Long affixFileSize = 1048576L * 10l;// 允许发送的最大附件大小(字节) private String emailServerIP = "smtp.qq.com";// 服务器的IP或域名 }
注意:以上代码是读取文本的内容替换{0} ,其实可以从properties文件中读取内容并动态替换参数,如下
Locale locale = Locale.getDefault(); ResourceBundle bundle = ResourceBundle.getBundle("config/sign",locale); String value = bundle.getString("test"); String format = MessageFormat.format(value,new Object[]{"北京","测试"}); System.out.println(format);对应资源内容为:test={0}测试{1}.
如果需要换行,则只需在需换行的位置加"\"。
注意:如果需要在资源文件中过滤"{}",则可以使用"'"包括,如'{}'。
资源文件:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk" /> <title>找回密码</title> </head> <body> 亲爱的用户 {0}:<br/> 您好!我们是XXX系统的工作人员!<br/> 感谢您对连锁门店管理系统的信赖和支持!<br/> 您在连锁门店管理系统注册的用户名是:{1}<br/> 您的邮箱地址是:{2}<br/> 请<a href="{3}">点击</a>或复制这个网址去重新设置您的密码(24小时之内有效):<br/> <a href="{4}">{5}</a><br/> 最后祝你生活愉快! <img src="{6}" border="0"/><br/> </body> </html>
注意:邮件正文中不支持<script>,但可以加入样式,如下:
<style type="text/css">\ table '{\ border: 1px solid #B1CDE3;\ border-collapse: collapse;\ }'\ td '{\ border: 1px solid #B1CDE3;\ font-size:28px;\ text-align: center;\ color: #4f6b72;\ }'\ </style>\注意:上面的{}用“‘”包括,是不被Properties解析,其中“\”是资源文件中换行连接符。
相关推荐
根据提供的代码片段,我们将详细分析如何使用 JavaMail 实现邮件的发送功能。 ##### 1. 导入必需的类库 ```java import java.util.Date; import java.util.Properties; import javax.mail.Message; import javax....
JavaMail 是一个开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一组API,使得开发者可以方便地处理SMTP、POP3、...通过阅读JavaMail的官方文档和参考示例代码,可以进一步了解和掌握这个强大的工具。
`sendmail`这个文件可能包含了示例代码或者一个简单的邮件发送服务实现,供开发者参考和使用。 JavaMail还提供了其他高级特性,如支持SSL/TLS加密、多线程发送、邮件搜索、邮件过滤等。对于复杂的应用场景,例如...
下面是一个简化的JavaMail发送邮件的过程: 1. **配置邮件会话**:首先,我们需要创建一个`Properties`对象,并设置SMTP服务器的相关参数,如主机名和端口号。然后,通过`Session.getInstance()`方法初始化一个邮件...
在这个主题“javaMail学习(七)——使用javaMail发复杂邮件”中,我们将深入探讨如何使用 JavaMail API 发送包含多种附件、HTML 内容和其他复杂元素的邮件。在提供的文件列表中,我们看到一系列名为 MailUtils 的类,...
总的来说,"Android使用javamail发送邮件"这个主题涵盖了Android平台上利用JavaMail API实现邮件发送的基本流程和注意事项,包括设置SMTP服务器、构建邮件消息、处理附件以及可能的安全性和用户体验优化。...
下面是一个简单的JavaMail发送邮件的示例代码: ```java import javax.mail.*; import javax.mail.internet.*; public class SimpleMailSender { public static void main(String[] args) throws Exception { //...
本教程将深入探讨如何在JSP(JavaServer Pages)中利用JavaMail API来实现邮件发送功能,同时提供了一个完整的Java Web项目文件供参考。 首先,要使用JavaMail,你需要在项目中引入必要的依赖。在Maven项目中,可以...
本教程将详细讲解如何利用JavaMail API在Java应用程序中发送邮件,同时提供附带的源码供参考。 首先,我们需要在项目中引入JavaMail的相关依赖。如果使用的是Maven工程,可以在pom.xml文件中添加以下依赖: ```xml...
在“javamail发送程序”中,核心概念包括Session、Message、Transport等。Session是JavaMail的全局配置对象,包含了连接邮件服务器所需的参数,如SMTP服务器地址、端口、用户名和密码。Message则代表一封电子邮件,...
在“javaMail发送邮件”这个主题中,主要涉及以下几个关键知识点: 1. **JavaMail API**:这是JavaMail的核心,包含了一系列的类和接口,如`Session`(会话)、`Message`(邮件对象)、`Transport`(传输)等,它们...
要使用JavaMail发送邮件,你需要配置一个`Session`对象,它是所有邮件操作的基础。这个对象包含了连接到邮件服务器所需的属性,如SMTP服务器地址、端口号、用户名和密码。你可以通过`Properties`类来设置这些属性,...
提供的文件"发送邮件及邮件附件java代码实例(支持多附件_群发送).doc"和"java_mail_发送邮件代码.doc"可能包含了更详细的代码示例和具体实现过程,建议参考这些文档以获取完整的邮件发送和附件处理的代码。...
下面将详细讲解如何利用Spring整合JavaMail发送QQ邮件。 首先,我们需要在项目中引入JavaMail的相关依赖。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml <groupId>com.sun.mail</groupId> ...
- JavaMail API 提供了标准的 Java 接口,使得开发者能够方便地在 Java 应用程序中创建、发送、接收和管理电子邮件。 - 主要的包有 `javax.mail` 和 `javax.mail.internet`,分别提供了邮件操作的基础类和互联网...
JavaMail 是一个开源的 Java 库,用于在 Java 应用程序中发送和接收电子邮件。它提供了丰富的 API,使得开发者可以方便地实现 SMTP、POP3 和 IMAP 协议的功能,进行邮件的发送、接收、读取和管理。在本文中,我们将...
JavaMail 是一个开源的 Java 库,用于在 Java 应用程序中实现电子邮件的发送和接收。这个库提供了丰富的 API,使得开发者可以方便地处理 SMTP、POP3 和 IMAP 协议,从而实现电子邮件的全面功能。在描述中提到的 ...
这部分代码会调用Javamail API来与邮件服务器通信,遵循SMTP(Simple Mail Transfer Protocol)协议发送邮件,使用POP3或IMAP协议接收邮件。 3. 数据存储:系统可能需要存储用户信息和邮件数据,这通常涉及到数据库...
JavaMail 是一个开源的 Java 库,用于在 Java 应用程序中实现电子邮件的发送和接收。这个库提供了丰富的 API,使得开发者可以方便地处理 SMTP、POP3 和 IMAP 协议,从而实现电子邮件的创建、发送、读取等功能。在...