这是我的目录

  • 一、开启邮箱服务
  • 编写发送邮件程序

今天公司某一个业务需要给顾客发邮件进行营销,并且需要附带附件,公司当前对该功能还没有进行封装。我暂时对于使用Java程序发送邮件练习一个小demo。

本文涉及到的知识点:
1.如何使用Java程序发送邮件
2.如何发送有附件的邮件
3.如何进行群发邮件
4.如何携带多个附件

一、开启邮箱服务

  • 打开QQ邮箱客户端,点击设置

  • 打开服务,并获取授权码(注意授权码很重要,为了保证传输的安全,我们后续使用传输中需要使用授权码作为密码的校验)

    • 注意这一步可能需要我们使用绑定邮箱的手机号发送短信,然后返回页面查看授权码就OK了

编写发送邮件程序

import java.io.UnsupportedEncodingException;
import java.security.GeneralSecurityException;
import java.util.Properties;import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
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.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;import com.alibaba.druid.util.StringUtils;
import com.sun.mail.util.MailSSLSocketFactory;/**
* 发送邮件工具类
*
* @author leiyu
*/
public class SendMailAcceUtils {/*** 发送带附件的邮件** @param receive  收件人* @param subject  邮件主题* @param msg      邮件内容* @param filename 附件地址* @return* @throws GeneralSecurityException*/public static boolean sendMail(String receive, String subject, String msg, String filename)throws GeneralSecurityException {if (StringUtils.isEmpty(receive)) {return false;}// 发件人电子邮箱final String from = "1010866409@qq.com";// 发件人电子邮箱密码final String pass = "xxxxxxxxxx";//注意这部分就是你获取的授权码// 指定发送邮件的主机为 smtp.qq.comString host = "smtp.qq.com"; // 邮件服务器// 获取系统属性Properties properties = System.getProperties();// 设置邮件服务器properties.setProperty("mail.smtp.host", host);properties.put("mail.smtp.auth", "true");MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);properties.put("mail.smtp.ssl.enable", "true");properties.put("mail.smtp.ssl.socketFactory", sf);// 获取默认session对象Session session = Session.getDefaultInstance(properties, new Authenticator() {public PasswordAuthentication getPasswordAuthentication() { // qq邮箱服务器账户、第三方登录授权码return new PasswordAuthentication(from, pass); // 发件人邮件用户名、密码}});try {// 创建默认的 MimeMessage 对象MimeMessage message = new MimeMessage(session);// Set From: 头部头字段message.setFrom(new InternetAddress(from));// Set To: 头部头字段message.addRecipient(Message.RecipientType.TO, new InternetAddress(receive));// Set Subject: 主题文字message.setSubject(subject);// 创建消息部分BodyPart messageBodyPart = new MimeBodyPart();// 消息messageBodyPart.setText(msg);// 创建多重消息Multipart multipart = new MimeMultipart();// 设置文本消息部分multipart.addBodyPart(messageBodyPart);// 附件部分messageBodyPart = new MimeBodyPart();// 设置要发送附件的文件路径DataSource source = new FileDataSource(filename);messageBodyPart.setDataHandler(new DataHandler(source));// messageBodyPart.setFileName(filename);// 处理附件名称中文(附带文件路径)乱码问题messageBodyPart.setFileName(MimeUtility.encodeText(filename));multipart.addBodyPart(messageBodyPart);// 发送完整消息message.setContent(multipart);// 发送消息Transport.send(message);// System.out.println("Sent message successfully....");return true;} catch (MessagingException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}return false;}public static void main(String[] args) {String receive="1010866409@qq.com";String subject ="邮件主题";String msg ="邮件内容";String filename ="E:\\a.excel";try {SendMailAcceUtils.sendMail(receive, subject, msg, filename);} catch (GeneralSecurityException e) {e.printStackTrace();}}
}

发送邮件— 实现群发

实现邮件的群发,实际上就是发件人的邮箱是多个,我们可能有多种方式进行邮件的发送,这里举例是使用最简单遍历的方式实现邮件的群发。

    public static void main(String[] args) {/******实现Java邮件的群发*****/ArrayList<String> strings = new ArrayList<String>();strings.add("1010866409@qq.com");strings.add("1010866409@qq.com");/*****************/
//        String receive="1010866409@qq.com";for (int i = 0; i < strings.size() ; i++) {String receive=strings.get(i);String subject ="这是一个邮件主题(欢迎您选择我们得营销策略)";String msg ="邮件内容(欢迎来店选购适合您的产品)";String filename ="E:\\a.md";try {SendMailAcceUtils.sendMail(receive, subject, msg, filename);} catch (GeneralSecurityException e) {e.printStackTrace();}}}

使用Java程序发送邮件|发送有附件的邮件|进行邮件群发相关推荐

  1. Java Email以及发送Email附件

    我们首先了解一下传统的邮件是如何进行发送的,首先把邮件发送到当地的邮局,当地的邮局又把邮件发送给目的地附近的邮局,最后目的地附近的邮局把邮件发送到目的地. 其实Email的发送方式也是类似,我们把类似 ...

  2. Java程序发送邮件

    之前上网有看到过别人总结的使用java程序发送邮件,于是自己下来练习,把自己学习的一些心得总结出来. 首先我们这里需要采用两个jar包: 需要的朋友可以自行上网去CSDN类似的网站上面找 顺便把自己测 ...

  3. 【java】实现发送带附件email

    一.目标 用java代码实现发送带附件email的功能 二.学习地址 http://wenku.baidu.com/view/0b5acc82e53a580216fcfe4e.html http:// ...

  4. Java实现批量发送带附件的邮件

    新功能上线时要经常发包到测试或生产服务器进行模块部署,但由于安全限制只能通过邮件传输小于10M的附件这种方式把jar包上传到服务器.所以往往要发送几十个邮件手动发送比较麻烦,偷懒写了个粘贴即用的Dem ...

  5. C#控制台程序,发送邮件,可带附件

    最近几天由于公司发送了大量内容相同的邮件,而被国外的反垃圾邮件组织列入了黑名单,致使很多客户收不到我们的邮件,客服接到投诉,而之前做的一个查询日志的小页面,因为某种原因,访问速度很慢,甚至这几天人一多 ...

  6. 进阶的阿牛哥之用python向多人发送邮件(带附件)、遍历邮件获取内容(两种方法:imbox、imaplib)

    (一)向多人发送邮件(带附件) 一.使用的库 这个程序涉及两个库:smtplib 和 email 这两个库都是Python自带的,所以不需要额外的下载安装. 二.思路和步骤 总体思路很简单,就像我们平 ...

  7. 简化日常工作系列之四 ---- 定时发送带附件的工作汇报邮件

    很久没有更新博客了,从6月初开始接手了公司项目组的管理工作(我只是个脚本仔,2333),一直忙于各种开发计划和统筹安排,手里也积攒了一些实践. 简化日常工作其中有一项是给相关工作伙伴或者上级发送每日( ...

  8. Java实现发送邮件并携带附件

    一. 邮件服务器与传输协议 要在网络上实现邮件功能,必须要有专门的邮件服务器.主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中. SMTP服务器地址:一般是 smtp.xxx.co ...

  9. java程序发送邮件_用java程序发送邮件

    public void test3() throws Exception{ //1:声明服务器地址 Properties p = new Properties(); p.setProperty(&qu ...

  10. java 实现微博推送_编写调用新浪微博API的Java程序来发送微博

    首先,需要下载新浪微博的sdk,这里附上地址:http://vdisk.weibo.com/s/z7ifc2gccwc1b 下载完了之后解压,然后打开myeclipse,新建项目,再把刚才解压出来的i ...

最新文章

  1. 收藏 | 神经网络的 5 种常见求导,附详细的公式过程
  2. 一周内咸鱼疯转 2.4W 次,最终被所有大厂封杀!
  3. dell笔记本电脑驱动_戴尔Dell电脑u盘启动盘重装win10系统步骤
  4. gcc -ldl 选项作用
  5. 5、MySQL修改数据库:ALTER DATABASE用法简介
  6. Oracle 原理:复杂的SQL语句
  7. 03_TF2 Guide、文档清单(数据输入、估计器、保存模型、加速器、性能调优等)、TF2库和扩展库(TensorBoard、数据集、TensorFlow Hub、概率和统计分析库、图像处理库)
  8. SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)
  9. gl3520 gl3510_带有gl gl本机的跨平台地理空间可视化
  10. knime实现python编写脚本
  11. 9203精英挑战赛注意事宜 一
  12. Google Maps API 申请方式变更为APIs Console, android手机申请方式
  13. facebook 开源_Facebook开源主管开放
  14. 蓝桥杯 ADV-89 算法提高 输出九九乘法表
  15. tomcat的服务器目录在哪个文件夹,Tomcat目录结构详细介绍
  16. .net中的设计模式---单例模式
  17. 二维数组,字符串,字符数组
  18. 【Unity编辑器扩展】查找场景和资源内挂载某脚本的所有对象
  19. html 屏幕录像,Screencastify:屏幕录像
  20. 基础练习 Sine之舞(最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。)

热门文章

  1. i7 8700k linux,性能起飞!I7-8700K 手动超频和一键超频教程
  2. 大数据培训:Hadoop生态系统圈
  3. 在8X8的棋盘上分布着n个骑士,他们想约在某一个格中聚会。骑士每天可以像国际象棋中的马那样移动一次,可以从中间像8个方向移动(当然不能走出棋盘),请计算n个骑士的最早聚会地点和要走多少天。要求尽早聚会
  4. 学透JavaScript 你真的懂 Array 吗?
  5. HTML中的空格符号( nbsp; ensp; emsp; )介绍以及中文对齐方式
  6. python文字处理dummy_python – 使用’dummy’变量创建数学函数,以便稍后进行评估...
  7. matlab插图放大模糊,PPT中怎样简单处理放大后失真的图片
  8. 用计算机绘制函数图像,用计算机绘制函数图像
  9. gcd函数(C/C++)
  10. wap建站程序源码_织梦程序搭建网站实例教程,想尝试搭建网站的朋友赶紧保存了...