发送邮件,是Web系统等IT建设中最常见的一种功能。

我对最常见的一种需求进行了抽象和封装,定义了一套标准的API,并且使用Java技术实现。

项目信息

项目名称:FansMail

项目作者:LeiWen

联系方式:LeiWen@FansUnion.cn

当前版本:1.0.2

日期:2013年12月12日

邮件发送API

/**
* 发送邮件。
*
* @param toList
* 收件人列表
* @param ccList
* 抄送人列表
* @param bccList
* 暗送人列表
* @param subject
* 邮件主题
* @param content
* 邮件正文
* @param attachmentList
* 附件列表
* @throws EmailException
*/
sendEmail(List<String> toList, List<String> ccList,
List<String> bccList, String subject, String content,
List<EmailAttachment> attachmentList) throws EmailException

简化API

下面几个API实际上是对上面的API的封装,方便调用而已。

 sendEmail(List<String> toList, String subject, String content) throws EmailException
sendEmail(List<String> toList, String subject, String content,
List<EmailAttachment> attachmentList) throws EmailException
sendEmail(List<String> toList, List<String> ccList,
String subject, String content, List<EmailAttachment> attachmentList)
throws EmailException
sendEmail(List<String> toList, List<String> ccList,
List<String> bccList, String subject, String content)
throws EmailException

下载

Jar包

FansMail-1.0.2.jar  http://fansunion.cn/download/FansMail-1.0.2.jar

依赖的Jar包

activation-1.1.jar,mail-1.4.jar,commons-email-1.2.jar

使用示例下载地址http://fansunion.cn/download/FansMail-1.0.2-demo.zip

使用示例

package test;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.mail.EmailException;
import cn.fansunion.common.email.EmailSender;
/**
* 发送Html格式,不带附件的邮件。
*
* @author leiwen@fansunion.cn
*
* 小雷团队:http://FansUnion.cn
*
* QQ:240-370-818
*/
public class SendHtmlEmail {
public static void main(String[] args) throws EmailException {
testHtmlEmail();
}
public static void testHtmlEmail() throws EmailException {
//邮件类型,true表示Html邮件,false表示纯文本邮件
EmailSender emailSender = new EmailSender(true);
// 接收者邮箱
String subject = "FansMail测试-Html邮件!";
String content = "test";
String to = "leiwen@fansunion.cn";
List<String> list = new ArrayList<String>();
list.add(to);
emailSender.sendEmail(list, subject, content);
}
}

配置文件

email.properties,需要放在CLASSPATH下,src的根目录即可

mail.smtp.host=smtp.qq.com

mail.smtp.from=leiwen@fansunion.cn

mail.smtp.name=leiwen@fansunion.cn

mail.smtp.password=yourpassword

mail.smtp.charset=UTF-8
mail.smtp.debug = false

Demo效果

致歉

1.API功能很弱,正在进一步丰富中。

2.暂时没有公开源码的打算。

我在思考,未来是否可以通过售卖工具组件的方式“养活”自己。

正在尝试中,程序员加油!

程序员的生存和价值

我一直在想,是否有必要把自己写的代码都“开源”。

软件作为一种逻辑产品,在中国,价值很低。普通用户,包括程序员,都喜欢免费使用别人的产品。一听到要“付费”,就不用了,或者用盗版。 传统的实物生产,比如沙发等,都是值钱的,即使价格不高。

未来会出现这种情况么,程序员不用在公司上班,靠写代码生存。比如我写了一个工具,例如本文提到的API,会有人付费么?或者,我在家办公,如果有人需要代码、API、组件、软件系统,就会联系我,然后双方合作。

作为一个程序员,我表示很纠结!!!

原文链接http://blog.fansunion.cn/articles/3448(小雷博客-blog.fansunion.cn)

FansMail:邮件发送标准API与技术实现(Java)的更多相关文章

  1. 补习系列(12)-springboot 与邮件发送【华为云技术分享】

    目录 一.邮件协议 关于数据传输 二.SpringBoot 与邮件 A. 添加依赖 B. 配置文件 C. 发送文本邮件 D.发送附件 E. 发送Html邮件 三.CID与图片 参考文档 一.邮件协议 ...

  2. JAVA实用案例之邮件发送

    最近有朋友问邮件怎么发送,就简单写了个demo,因为懒得找jar包,所以项目是创建的maven工程,具体的maven引用的jar如下: <dependency> <groupId&g ...

  3. java邮件发送(含附件)

    1. [代码]java邮件发送(含附件)疯狂的IT人站长整理的:利用Java发送邮件(含附件)的例子:1.邮件发送的配置propertity文件内容如下:(utils.properties文件放在sr ...

  4. springboot+kafka+邮件发送(最佳实践)

    导读 集成spring-kafka,生产者生产邮件message,消费者负责发送 引入线程池,多线程发送消息 多邮件服务器配置 定时任务生产消息:计划邮件发送 实现过程 导入依赖 <proper ...

  5. JavaMail API 1.4.7邮件发送

    下载oracle javaMail API: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive- ...

  6. 免费超大量邮件发送服务Amazon SES和Mailgun提供SMTP和API支持

    一般来说网站注册.论坛消息.新闻推送.广告宣传等都会有发送邮件服务,大量的邮件发送服务如果用PHP来发送,一是会消耗主机资源,二是容易被各大邮箱判定为垃圾邮件而被拒收.用第三方的邮局服务发送邮件,可以 ...

  7. springboot 简单邮件发送

    写作原因: 项目接近尾声,需求一变再变,其实技术点从未改变,只是业务逻辑的变更,发送邮件提醒的功能,两个月变更七次.我想把技术点记录下来,这里无关乎业务,只有发送邮件的功能. 邮件发送准备说明: 由于 ...

  8. SpringBoot集成邮件发送

    一:简述 在日常中的工作中难免会遇到程序集成邮件发送功能.接收功能:此篇文章我将使用SpringBoot集成邮件发送功能和接收功能:若对邮件一些基本协议和发送流程不懂的请务必参考我之前写的博客或者浏览 ...

  9. 补习系列(12)-springboot 与邮件发送

    目录 一.邮件协议 关于数据传输 二.SpringBoot 与邮件 A. 添加依赖 B. 配置文件 C. 发送文本邮件 D.发送附件 E. 发送Html邮件 三.CID与图片 参考文档 一.邮件协议 ...

随机推荐

  1. webpack+react实现echarts可视化配置

    先上效果 开发环境要求 需要事先安装node及npm 前期准备 1.创建文件夹react-echarts-editor2.在项目根目录(以下称根目录)下创建src目录3.在项目根目录下创建dist目录 ...

  2. scp---远程拷贝文件

    scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器硬盘变为只读read onl ...

  3. SpringBoot结合Mybatis 使用 mapper*.xml 进行数据库增删改查操作

    什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyBa ...

  4. julia/pyplot 绘图加入标签和标题

    julia 调用matplotlib.pyplot 须要先using pycall 先安装pycall Pkg.add("PyCall") 然后吧. . . 上代码把:(应该是通俗 ...

  5. Cocos2d-x怎样控制动作速度

    基本动作和组合动作实现了针对精灵的各种运动和动画效果的改变.但这种改变速度匀速的.线性的.通过ActionEase及其的派生类和Speed 类我们能够使精灵以非匀速或非线性速度运动,这样看起了效果更加 ...

  6. window cmd 命令大全 (order)

    Windows CMD命令大全 命令简介 cmd是command的缩写.即命令行 . 运行操作 CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统 ...

  7. java接口理解(转载)

    今天和同事好好的讨论了java接口的原理和作用,发现原来自己的对接口的理解仅仅是局限在概念的高度抽象上,觉得好像理解了但是不会变化应用其实和没有理解差不多.以前看一个帖子说学习一个东西不管什么时候都要 ...

  8. POj 2159 Dividing

    Dividing Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 71453   Accepted: 18631 Descri ...

  9. idea python notebook连接pyspark

    1.启动pyspark 2.查看pyspark服务的token  jupyter notebook list 查看正在运行的notebook服务以及他们的token 3.在idea里运行noteboo ...

  10. css3--根据数据加载显示的一个动画

    css: .circle { width: 200px; height: 200px; position: absolute; border-radius: 50%; background: #0cc ...