- 浏览: 129646 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
mr_wangjq:
...
跟着官网学Struts2使用(一) -
雪馨25:
sweat89 写道嗯,楼主的学习方法,很值得我学习。加油!! ...
跟着官网学Struts2使用(一) -
雪馨25:
381895649 写道建议用用springmvc,哈.嗯,都 ...
跟着官网学Struts2使用(一) -
sweat89:
嗯,楼主的学习方法,很值得我学习。加油!!
跟着官网学Struts2使用(一) -
381895649:
建议用用springmvc,哈.
跟着官网学Struts2使用(一)
一、目标
用java代码实现发送带附件email的功能
二、学习地址
http://wenku.baidu.com/view/0b5acc82e53a580216fcfe4e.html
http://redleaf.iteye.com/blog/78217
三、前期准备:
增加jar包:javamail1_4_5.zip
四、代码
public class SendMailService { private MailInformation mailInfor; private static SendMailService sendMailService; public void setMailInfor(MailInformation mailInfor) { this.mailInfor = mailInfor; } public static SendMailService getService() { if (sendMailService == null) { sendMailService = new SendMailService(); } return sendMailService; } /** * 此段代码用来发送普通带附件电子邮件 */ public void send() throws Exception { try { Properties props = new Properties(); // 获取系统环境 Authenticator auth = new Email_Autherticator(); // 进行邮件服务器用户认证 props.put("mail.smtp.host", mailInfor.getHost()); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, auth); // 用于在console中显示执行过程信息 session.setDebug(true); // 设置session,和邮件服务器进行通讯。 MimeMessage message = new MimeMessage(session); message.setSubject(mailInfor.getMail_subject()); // 设置邮件标题 message.setSentDate(new Date()); // 设置邮件发送日期 Address address = new InternetAddress(mailInfor.getSendEmail(), mailInfor.getSendPassword()); message.setFrom(address); // 设置邮件发送者的地址 Address toAddress = new InternetAddress(mailInfor.getMail_to()); // 设置邮件接收方的地址 message.addRecipient(Message.RecipientType.TO, toAddress);// 加载收件人地址 message.setText(mailInfor.getMail_body()); // 设置邮件正文 // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 Multipart multipart = new MimeMultipart(); // 设置邮件的文本内容 BodyPart contentPart = new MimeBodyPart(); contentPart.setText(mailInfor.getMail_body()); multipart.addBodyPart(contentPart); multipart.addBodyPart(contentPart); if (!mailInfor.getFile().isEmpty()) {// 有附件 Enumeration efile = mailInfor.getFile().elements(); while (efile.hasMoreElements()) { contentPart = new MimeBodyPart(); String filename = efile.nextElement().toString(); // 选择出每一个附件名 FileDataSource fds = new FileDataSource(filename); // 得到数据源 contentPart.setDataHandler(new DataHandler(fds)); // 得到附件本身并至入BodyPart // contentPart.setFileName(fds.getName()); // //得到文件名同样至入BodyPart,并解决中文名乱码问题 contentPart.setFileName(MimeUtility.encodeText(fds .getName())); multipart.addBodyPart(contentPart); } mailInfor.getFile().removeAllElements(); } // 将multipart对象放到message中 message.setContent(multipart, "text/html;charset=gb2312"); // Multipart加入到信件 // 保存邮件 message.saveChanges(); Transport.send(message); // 发送邮件 System.out.println("send ok!"); } catch (Exception ex) { ex.printStackTrace(); throw new Exception(ex.getMessage()); } } /** * 用来进行服务器对用户的认证 */ class Email_Autherticator extends Authenticator { public Email_Autherticator() { super(); } Email_Autherticator(String user, String pwd) { super(); mailInfor.setSendEmail(user); mailInfor.setSendPassword(pwd); } public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(mailInfor.getSendEmail(), mailInfor.getSendPassword()); } } }
javaBean
public class MailInformation { // 发送邮件的邮箱地址服务器 private String host; // 这个是你的邮箱用户名以及邮件显示发送者邮箱 private String sendEmail ; // 你的邮箱密码 private String sendPassword ; //邮件发送者显示姓名 private String sendName ; //待接收的邮箱 private String mail_to ; //邮件标题 private String mail_subject; //邮件内容 private String mail_body ; //用于保存发送附件的文件名的集合 private Vector<String> file ; /** * 建立发邮件实体时传入发件人的email信息 * @param sendEmail email地址 * @param sendPassword email密码 * @param sendName 发送邮件中显示发件人姓名 */ public MailInformation(String sendEmail,String sendPassword,String sendName){ this.sendEmail = sendEmail; this.sendPassword = sendPassword; this.sendName = sendName; } /** * 163邮箱的host */ public void set163Host(){ host = "smtp.163.com"; } /** * 126邮箱的host */ public void set126Host(){ host = "smtp.126.com"; } /** * qq邮箱的host */ public void setQQHost(){ host = "smtp.qq.com"; } /** * 雅虎邮箱的host */ public void setYahooHost(){ host = "smtp.mail.yahoo.com.cn "; } /** * 获得发送邮件的邮箱地址服务器 * @return 地址服务器 */ public String getHost() { return host; } /** * 设置发送邮件的邮箱地址服务器 * @param host */ public void setHost(String host) { this.host = host; } /** * 设置发件人的email * @param sendEmail email */ public void setSendEmail(String sendEmail) { this.sendEmail = sendEmail; } /** * 得到发件人的email * @return sendEmail email */ public String getSendEmail() { return sendEmail ; } /** * 设置发件人的email密码 * @param sendPassword 密码 */ public void setSendPassword(String sendPassword) { this.sendPassword = sendPassword; } /** * 得到发件人的email密码 * @return sendPassword 密码 */ public String getSendPassword() { return sendPassword ; } /** * 得到邮件中显示的发件人姓名 * @return 发件人姓名 */ public String getSendName() { return sendName; } /** * 设置邮件中显示的发件人姓名 * @param sendName 发件人姓名 */ public void setSendName(String sendName) { this.sendName = sendName; } /** * 得到收件人email * @return 收件人email */ public String getMail_to() { return mail_to; } /** * 设置收件人email * @param mail_to 收件人email */ public void setMail_to(String mail_to) { this.mail_to = mail_to; } /** * 邮件标题 * @return 邮件标题 */ public String getMail_subject() { return mail_subject; } /** * 设置邮件标题 * @param mail_subject 邮件标题 */ public void setMail_subject(String mail_subject) { this.mail_subject = mail_subject; } /** * 得到邮件内容 * @return 邮件内容 */ public String getMail_body() { return mail_body; } /** * 设置邮件内容 * @param mail_body 邮件内容 */ public void setMail_body(String mail_body) { this.mail_body = mail_body; } /** * 得到附件所在的绝对路径 * @return 绝对路径 */ public Vector<String> getFile() { return file; } /** * 天剑附件所在的绝对路径 * @return 绝对路径 */ public void setFile(Vector<String> file) { this.file = file; } }
五、调用方式
public static void main(String[] args) { SendMailService sendmail = SendMailService.getService(); MailInformation mailInformation = new MailInformation( "发件人email", "发件人email密码", "发件人显示姓名"); mailInformation.set163Host(); mailInformation.setMail_subject("测试发送邮件"); mailInformation.setMail_body("这是一封测试是否能够发送带附件邮件的信"); mailInformation.setMail_to("收件人email"); Vector<String> fileStr = new Vector<String>(); fileStr.add("附件地址绝对路径"); mailInformation.setFile(fileStr); sendmail.setMailInfor(mailInformation); try { sendmail.send(); } catch (Exception ex) { ex.printStackTrace(); } }
六、问题解决
1、发送邮件的邮箱地址服务器
需要搜索得到发件人邮箱的 SMTP服务器地址,比如126的:http://help.163.com/09/0219/10/52GOPOND007536NI.html
2、中文名附件乱码解决
解决地址:http://ben-sin.iteye.com/blog/387536
方法:contentPart.setFileName(MimeUtility.encodeText
(fds.getName()));
发表评论
-
算法--排序(冒泡,选择,插入,快速)
2013-01-08 14:35 1776一、冒泡排序 1.1 概念 重复地走访过要排序的数 ... -
基础正则表达式知识学习总结
2012-07-22 00:10 735学习的网址 http://regexbook ... -
【java】JTable中某一列设置为下拉列表
2012-07-23 17:34 1233JComboBox c = new JComboBox( ... -
【java】JETM--Java™的执行时间测量库简单学习(一)
2012-08-15 17:11 1958一、下载 用途:测试Java™应用程序潜在的性 ... -
【java】实现日历对话框
2012-08-24 16:20 1556一、实现效果 二、代码 // ... -
【java】实现柱状图 饼状图
2012-08-30 10:45 3044一、前提: 下载增加ja ... -
【java】实现导出Excel文件和XML文件
2012-08-30 14:43 3169一、功能简述 点击“导出”按钮,弹出文件选择对话框, ... -
【java】值传递和引用传递理解
2012-09-03 18:48 835一、理解 ★ 当一个变量最为一个参数传入方法 ... -
【java】构造函数的继承执行顺序
2012-09-08 11:31 2694问题: 子类继承父类,构造函数及公共属性的执行顺序是 ... -
【java】加密方式
2012-09-11 15:06 968/** * String Utility Class Th ... -
【hibernate】问题:hibernate无法持久化数据
2012-10-25 16:57 1009现象: 程序执行正确,但数据库没有已经执行成功的插入数据 ... -
【java】JTextField与JComboBox结合动态匹配输入信息
2012-11-07 14:24 2419一、实现效果 二、代码 import ... -
【java】反射可执行的实例
2012-12-01 18:17 942一、实例目标 根据传入的完整类名字符串类名,实现 ...
相关推荐
javaemail发送邮件(带附件)是使用Java技术实现的邮件发送功能,支持带附件的发送。下面是该功能的知识点总结: 1. 使用JavaMailSenderImpl类来发送邮件,需要设置SMTP服务器、用户名、密码等参数。 2. 使用...
总结一下,Java发送带有附件的邮件涉及到JavaMail API的使用,包括配置SMTP服务器、创建邮件对象、添加内容和附件,以及发送邮件等步骤。理解这些步骤和相关类的作用是实现此功能的关键。在处理不同类型的邮件时,...
在Java编程语言中,发送带有附件的邮件是一个常见的任务,特别是在...希望这个详细的解释能帮助你在学习和实践中更好地理解和实现Java发送带有附件的邮件功能。记得在实际使用时替换示例中的SMTP服务器配置和文件路径。
在本文中,我们将深入探讨如何使用JavaMail API来发送带有附件的电子邮件。 首先,我们需要理解JavaMail的基本组件。`javax.mail.Session`是JavaMail的核心,用于管理邮件会话和配置邮件服务器信息。`Message`对象...
本示例将详细讲解如何使用Java实现通过QQ邮箱发送附件的功能。这个功能主要依赖于JavaMail API,它是一个开源库,为Java开发者提供了处理电子邮件的能力。 首先,我们需要在项目中引入JavaMail相关的依赖。如果你...
本文将深入探讨如何使用Java实现电子邮件的发送功能,包括向多个收件人发送邮件。我们将主要涉及JavaMail API,它是一个用于处理邮件的开源库。 JavaMail API是Java平台上的标准API,提供了创建、发送和接收邮件的...
3. **添加附件**:如果需要发送附件,可以使用`Multipart`对象来组合文本和附件。创建一个`MimeMultipart`实例,并添加`MimeBodyPart`来表示附件。 ```java MimeBodyPart attachmentPart = new MimeBodyPart(); ...
下面是一个简单的Java发送邮件的示例代码: ```java Properties props = new Properties(); props.put("mail.smtp.host", "smtp.example.com"); props.put("mail.smtp.port", "587"); props.put("mail.smtp....
java实现发送email,已经经过调试,我把发送email这项功能封装成了一个实体类,可以添加多个附件,使用时可以直接调用使用。里面还有一个你很可能遇到的一个bug,已经给出解决方法。我把所需要的包也已经传上,放进...
在Spring Boot框架中,整合JavaMailSender接口可以轻松地实现实现发送电子邮件的功能,包括发送带附件的邮件。本文将详细介绍如何在Spring Boot项目中配置和使用JavaMailSender来发送带有附件的邮件。 首先,我们...
如果要发送附件,可以使用`Multipart`和`BodyPart`来构建复杂的邮件结构。 ```java Multipart multipart = new MimeMultipart(); // 添加文本正文 BodyPart messageBodyPart = new MimeBodyPart(); ...
发送邮件到指定邮箱,可以携带附件,html,实现登录验证等功能。
在使用Java发送邮件前,你需要在邮件服务提供商的账户设置中开启相应的服务。以QQ邮箱为例,你需要在QQ邮箱的设置中开启POP3/SMTP服务以及IMAP/SMTP服务。这些服务允许Java程序通过SMTP协议发送邮件,并可能通过POP3...
在这个例子中,我们将深入探讨如何使用Apache Commons Email库在Java中实现邮件发送。 首先,你需要在项目中引入Apache Commons Email的依赖。如果是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml ...
demo介绍:http://blog.csdn.net/love_xiolan/article/details/56016576 java发送email邮件 1.发送普通email邮件 2.发送带附件的email邮件 3.邮件抄送和密送 4.发送html邮件 5.发送模板文件
总之,Apache Commons Email为Java开发者提供了一个强大且易于使用的邮件发送工具,通过简单的代码即可实现包括发送验证码在内的各种邮件功能。在实际开发中,结合业务需求进行适当的优化和扩展,可以极大地提升开发...
发送附件是通过`Multipart`对象实现的,它允许我们组合多个部分,包括文本和二进制文件。首先,创建一个`MimeBodyPart`对象来表示附件,然后将其添加到`Multipart`: ```java MimeBodyPart attachmentPart = new ...
本篇文章将详细讲解如何使用Java实现一个简单的电子邮件发送案例。我们将关注以下关键知识点: 1. **JavaMail API**:JavaMail API 是Java平台上的标准库,用于处理电子邮件。它提供了丰富的接口和类来创建、发送和...
首先,JavaMail API是Java中用于发送邮件的核心库。它提供了一系列接口和类,使得我们可以轻松地与SMTP(Simple Mail Transfer Protocol)服务器进行通信。要使用JavaMail,我们需要在项目中引入对应的依赖,如Maven...
本教程将深入讲解如何使用Java实现邮件发送功能,包括添加附件和向多个收件人发送邮件。 首先,我们来看`Mailer.java`,这个类通常会封装邮件发送的核心逻辑。在Java中,我们主要依赖JavaMail API来实现邮件的发送...