- 浏览: 125234 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1726一、冒泡排序 1.1 概念 重复地走访过要排序的数 ... -
基础正则表达式知识学习总结
2012-07-22 00:10 689学习的网址 http://regexbook ... -
【java】JTable中某一列设置为下拉列表
2012-07-23 17:34 1171JComboBox c = new JComboBox( ... -
【java】JETM--Java™的执行时间测量库简单学习(一)
2012-08-15 17:11 1871一、下载 用途:测试Java™应用程序潜在的性 ... -
【java】实现日历对话框
2012-08-24 16:20 1501一、实现效果 二、代码 // ... -
【java】实现柱状图 饼状图
2012-08-30 10:45 2940一、前提: 下载增加ja ... -
【java】实现导出Excel文件和XML文件
2012-08-30 14:43 3106一、功能简述 点击“导出”按钮,弹出文件选择对话框, ... -
【java】值传递和引用传递理解
2012-09-03 18:48 784一、理解 ★ 当一个变量最为一个参数传入方法 ... -
【java】构造函数的继承执行顺序
2012-09-08 11:31 2645问题: 子类继承父类,构造函数及公共属性的执行顺序是 ... -
【java】加密方式
2012-09-11 15:06 916/** * String Utility Class Th ... -
【hibernate】问题:hibernate无法持久化数据
2012-10-25 16:57 923现象: 程序执行正确,但数据库没有已经执行成功的插入数据 ... -
【java】JTextField与JComboBox结合动态匹配输入信息
2012-11-07 14:24 2360一、实现效果 二、代码 import ... -
【java】反射可执行的实例
2012-12-01 18:17 895一、实例目标 根据传入的完整类名字符串类名,实现 ...
相关推荐
java发送附件mail, 包阔多附件,文本mail,以及网页mail.
java发送邮件,可以带附件,java技术不是很好,写的不是很好,还请大家见谅!
NULL 博文链接:https://gaojunwei.iteye.com/blog/1939086
java实现发送email,已经经过调试,我把发送email这项功能封装成了一个实体类,可以添加多个附件,使用时可以直接调用使用。里面还有一个你很可能遇到的一个bug,已经给出解决方法。我把所需要的包也已经传上,放进...
发送邮件到指定邮箱,可以携带附件,html,实现登录验证等功能。
demo介绍:http://blog.csdn.net/love_xiolan/article/details/56016576 java发送email邮件 1.发送普通email邮件 2.发送带附件的email邮件 3.邮件抄送和密送 4.发送html邮件 5.发送模板文件
这里使用的是163的邮箱测试,用qq的邮箱验证不了,要加别的东西,暂时先用163的测试,邮件成功发送,2016.06.07
利用Java发送邮件(含附件)的例子 1、邮件发送的配置propertity文件内容如下:(utils.properties文件放在src下面) emailsmtp=smtp.qq.comemailaddress=459104018@qq.comemailpass=******2、读取配置文件的类文件...
一个java发送email的demo,很清晰,带附件,可以抄送,暗送
采用Javaemail技术,实现多人多附件邮件发送,可自定义发件人和收件人昵称,有工具类和测试类两部分,很适合初学者
这个java project的源代码 博文链接:https://kukuqiu.iteye.com/blog/161771
common email 附件发送 activation.jar commons-email-1.2.jar mail.jar
java邮件发送,直接是eclipse项目,其中MailTest是测试类
利用java-mail包commons-email-1.1.jar mail.jar commons-fileupload-1.2.1.jar commons-io-1.4.jar 实现邮件的普通发送、附件发送。
maven下直接粘过去就可以用;使用163邮箱自动发送邮件,亲自试用,童叟无欺;else 需自己下jar:activation.jar 和mail.jar
javaEmail邮件发送资源包,发送附件,及html格式邮件
email发送,可以添加附件发送,发送给多个人,抄送 多个人。获悉下载个人邮箱里的邮件等。
这个是我发了一天的时间封装好的Java发送Email 无需任何杂乱架包 你只需要我这一架包就够了 里面有2个客户端方法 而且是static的直接用即可 支持附件奥 我忙碌了一天 这个架包大大减少了开发 什么都不需要只要一个...
只用socket实现邮件发送接收,课程项目,做了几天写完,有图形界面,本来想加个附件,GG,最后给分还可以。。。。