【JavaMail开发总结】配置文件形式--发送邮件程序

原创 2015年08月09日 17:10:43

        在上一篇中简单的实现了一个发送邮件功能的程序,今天用配置文件的方式来实现,大致思路一致,示例代码如下:

package com.javamail.test.demo;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class EmailUtil {
 /**
  * 发送邮件
  * @param to 
  *   收信人
  * @param subject
  *   邮件主题
  * @param content
  *   邮件内容
  * @throws IOException
  * @throws AddressException
  * @throws MessagingException
  */
 public static void send_email(String to, String subject, String content)
               throws IOException, AddressException, MessagingException {
     Properties properties = new Properties();
     InputStream resourceAsStream = null;
     try {
         // 获取配置文件
         resourceAsStream = EmailUtil.class.getClassLoader().getResourceAsStream("email.properties");
         properties.load(resourceAsStream);
     } finally {
          if (resourceAsStream != null) {
              resourceAsStream.close();
          }
     }
     // System.err.println("properties:"+properties);
     properties.put("mail.smtp.host", properties.get("mail.smtp.host"));
     properties.put("mail.smtp.port", properties.get("mail.smtp.port"));
     properties.put("mail.smtp.auth", "true");
     Authenticator authenticator = new Email_Authenticator(properties.get(
             "username").toString(), properties.get("password").toString());
     javax.mail.Session sendMailSession = javax.mail.Session
              .getInstance(properties, authenticator);
     MimeMessage mailMessage = new MimeMessage(sendMailSession);
     //设置发信人
     mailMessage.setFrom(new InternetAddress(properties.get("username")
              .toString(),"***"));
     // 设置收信人,Message.RecipientType.TO 收信人,Message.RecipientType.CC抄送人
     mailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(
               to,properties.get("username").toString()));
     //主题
     mailMessage.setSubject(subject, "UTF-8");
     //设置邮件发送日期
     mailMessage.setSentDate(new Date());
     // MiniMultipart类是一个容器类
     Multipart mainPart = new MimeMultipart();
     // 创建一个邮件体对象
     BodyPart html = new MimeBodyPart();
     html.setContent(content.trim(), "text/html; charset=utf-8");
     mainPart.addBodyPart(html);
     mailMessage.setContent(mainPart);
     Transport.send(mailMessage);
  }
}
//通过构造函数传入身份验证信息
class Email_Authenticator extends Authenticator {
    String userName = null;
    String password = null;
    public Email_Authenticator() {
    }
    public Email_Authenticator(String username, String password) {
        this.userName = username;
        this.password = password;
    }
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(userName, password);
    }
}



 配置文件如下(一般放在src目录下):

#email Configuration
#need account and password
#author cash
#host
mail.smtp.host=smtp.qq.com
#port
mail.smtp.port=25
#your email account
username=***@qq.com
#your email password
password=***


"mail.smtp.host=smtp.qq.com"指的是用qq.com的smtp服务器,除此之外还有163.com等等

"mail.smtp.port=25"指的是SMTP服务器端口是25

【JavaMail开发总结】注意事项

通过前面的几篇文章讲了怎样用JavaMail实现发送邮件的功能,今天做点总结需要注意的一些地方 首先是发送邮件时,发件人的信箱,要使用对应的邮件的电子信箱服务器,比如前面的文章中的代码 Propert...
  • u010202304
  • u010202304
  • 2015年08月25日 01:53
  • 762

使用JavaMail创建邮件和发送邮件

欢迎加入QQ群交流:1群已满,请加2群466355109,技术不全没关系,只要有交流的心就尽管来吧 一、RFC882文档简单说明   RFC882文档规定了如何编写一封简单的邮件(纯文...
  • hj7jay
  • hj7jay
  • 2015年11月26日 16:09
  • 1100

初学单片机时总结的想法及一些程序

大二写的一个总结,今天翻出来整理了下。放在此处晒晒。 一、单片机编程总结 1、要养成总结的好习惯,总结不仅是对自己学习的一个总结,还是对学习过程的一个回顾与加深,还可避免第二次犯错。 2、编写程序之前...
  • E_ROAD_BY_U
  • E_ROAD_BY_U
  • 2016年08月26日 09:27
  • 1876

让你提前认识软件开发(12):配置文件读取及文件操作

让你提前认识软件开发---学长的软件开发经验总结(12) 配置文件读取及文件操作   【文章摘要】         在通信领域的软件开发项目中,C语言是主流的编程语言,而文件操作在其中又占有很重要的地...
  • zhouzxi
  • zhouzxi
  • 2014年04月12日 20:47
  • 3505

一个程序员的总结——开发注意事项

一年到头了,作为本命年的我,今年发生了太多的事情,但是不幸的是,都是好事儿,有点太过得意洋洋了,不过,不管一年顺抑或不顺,都是需要总结的,毕竟,总结,才能让人成长,首先,想注意的事情就是开发注意事项。...
  • laner0515
  • laner0515
  • 2015年02月25日 19:04
  • 5175

邮件原理与JavaMail开发(一)——邮件的发送与接收原理

Java邮件开发介绍为什么要学习javamail开发现在很多WEB应用在开发时都需要集成邮件发送功能,例如: 给新注册的用户自动发送一封包含其注册信息的欢迎E-Mail。 给过生日的注册会员自动发送一...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2016年09月21日 15:38
  • 3825

邮件开发:Tomcat中JavaMail支持与冲突

l用普通方式在web应用程序中增加邮件发送功能,在eclipse没有导入mail.jar可以编译,但部署运行有问题的原因 l用Tomcat支持的JNDI资源方式,步骤: Ø配置JNDI资源。 Ø...
  • xxssyyyyssxx
  • xxssyyyyssxx
  • 2016年01月07日 10:29
  • 498

[Android]Android插件化开发入门篇

1、什么是插件化开发 拿活跃用户量第一的微信来说,在第三个界面有个游戏,点开后可以选择很多的增植功能,这里腾讯只放了一些网页应用,那么如果未来想加入一个益智游戏,要怎么做?让用户重新安装吗,这就是插...
  • CodeEmperor
  • CodeEmperor
  • 2016年01月07日 13:25
  • 2388

iOS开发经验总结

iOS开发经验总结 在iOS开发中经常需要使用的或不常用的知识点的总结,几年的收藏和积累(踩过的坑)。 一、 iPhone Size 手机型号 屏幕尺寸 ...
  • liangliang103377
  • liangliang103377
  • 2016年05月12日 16:20
  • 3840

ASP.NET Web开发技术的深入总结

【IT168技术】在国内.Net开发这个环境里, 中小型公司,或者大公司但主营业务不是软件开发里面的软件小团队,针对.Net开发人员的要求都是十项全能型的全才, 能做的了从前台页面展现到最后数据存储的...
  • SJian123
  • SJian123
  • 2014年09月02日 16:01
  • 1187
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【JavaMail开发总结】配置文件形式--发送邮件程序
举报原因:
原因补充:

(最多只允许输入30个字)