使用Java程序发送邮件|发送有附件的邮件|进行邮件群发
这是我的目录
- 一、开启邮箱服务
- 编写发送邮件程序
今天公司某一个业务需要给顾客发邮件进行营销,并且需要附带附件,公司当前对该功能还没有进行封装。我暂时对于使用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程序发送邮件|发送有附件的邮件|进行邮件群发相关推荐
- Java Email以及发送Email附件
我们首先了解一下传统的邮件是如何进行发送的,首先把邮件发送到当地的邮局,当地的邮局又把邮件发送给目的地附近的邮局,最后目的地附近的邮局把邮件发送到目的地. 其实Email的发送方式也是类似,我们把类似 ...
- Java程序发送邮件
之前上网有看到过别人总结的使用java程序发送邮件,于是自己下来练习,把自己学习的一些心得总结出来. 首先我们这里需要采用两个jar包: 需要的朋友可以自行上网去CSDN类似的网站上面找 顺便把自己测 ...
- 【java】实现发送带附件email
一.目标 用java代码实现发送带附件email的功能 二.学习地址 http://wenku.baidu.com/view/0b5acc82e53a580216fcfe4e.html http:// ...
- Java实现批量发送带附件的邮件
新功能上线时要经常发包到测试或生产服务器进行模块部署,但由于安全限制只能通过邮件传输小于10M的附件这种方式把jar包上传到服务器.所以往往要发送几十个邮件手动发送比较麻烦,偷懒写了个粘贴即用的Dem ...
- C#控制台程序,发送邮件,可带附件
最近几天由于公司发送了大量内容相同的邮件,而被国外的反垃圾邮件组织列入了黑名单,致使很多客户收不到我们的邮件,客服接到投诉,而之前做的一个查询日志的小页面,因为某种原因,访问速度很慢,甚至这几天人一多 ...
- 进阶的阿牛哥之用python向多人发送邮件(带附件)、遍历邮件获取内容(两种方法:imbox、imaplib)
(一)向多人发送邮件(带附件) 一.使用的库 这个程序涉及两个库:smtplib 和 email 这两个库都是Python自带的,所以不需要额外的下载安装. 二.思路和步骤 总体思路很简单,就像我们平 ...
- 简化日常工作系列之四 ---- 定时发送带附件的工作汇报邮件
很久没有更新博客了,从6月初开始接手了公司项目组的管理工作(我只是个脚本仔,2333),一直忙于各种开发计划和统筹安排,手里也积攒了一些实践. 简化日常工作其中有一项是给相关工作伙伴或者上级发送每日( ...
- Java实现发送邮件并携带附件
一. 邮件服务器与传输协议 要在网络上实现邮件功能,必须要有专门的邮件服务器.主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中. SMTP服务器地址:一般是 smtp.xxx.co ...
- java程序发送邮件_用java程序发送邮件
public void test3() throws Exception{ //1:声明服务器地址 Properties p = new Properties(); p.setProperty(&qu ...
- java 实现微博推送_编写调用新浪微博API的Java程序来发送微博
首先,需要下载新浪微博的sdk,这里附上地址:http://vdisk.weibo.com/s/z7ifc2gccwc1b 下载完了之后解压,然后打开myeclipse,新建项目,再把刚才解压出来的i ...
最新文章
- 收藏 | 神经网络的 5 种常见求导,附详细的公式过程
- 一周内咸鱼疯转 2.4W 次,最终被所有大厂封杀!
- dell笔记本电脑驱动_戴尔Dell电脑u盘启动盘重装win10系统步骤
- gcc -ldl 选项作用
- 5、MySQL修改数据库:ALTER DATABASE用法简介
- Oracle 原理:复杂的SQL语句
- 03_TF2 Guide、文档清单(数据输入、估计器、保存模型、加速器、性能调优等)、TF2库和扩展库(TensorBoard、数据集、TensorFlow Hub、概率和统计分析库、图像处理库)
- SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)
- gl3520 gl3510_带有gl gl本机的跨平台地理空间可视化
- knime实现python编写脚本
- 9203精英挑战赛注意事宜 一
- Google Maps API 申请方式变更为APIs Console, android手机申请方式
- facebook 开源_Facebook开源主管开放
- 蓝桥杯 ADV-89 算法提高 输出九九乘法表
- tomcat的服务器目录在哪个文件夹,Tomcat目录结构详细介绍
- .net中的设计模式---单例模式
- 二维数组,字符串,字符数组
- 【Unity编辑器扩展】查找场景和资源内挂载某脚本的所有对象
- html 屏幕录像,Screencastify:屏幕录像
- 基础练习 Sine之舞(最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。)
热门文章
- i7 8700k linux,性能起飞!I7-8700K 手动超频和一键超频教程
- 大数据培训:Hadoop生态系统圈
- 在8X8的棋盘上分布着n个骑士,他们想约在某一个格中聚会。骑士每天可以像国际象棋中的马那样移动一次,可以从中间像8个方向移动(当然不能走出棋盘),请计算n个骑士的最早聚会地点和要走多少天。要求尽早聚会
- 学透JavaScript 你真的懂 Array 吗?
- HTML中的空格符号( nbsp; ensp; emsp; )介绍以及中文对齐方式
- python文字处理dummy_python – 使用’dummy’变量创建数学函数,以便稍后进行评估...
- matlab插图放大模糊,PPT中怎样简单处理放大后失真的图片
- 用计算机绘制函数图像,用计算机绘制函数图像
- gcd函数(C/C++)
- wap建站程序源码_织梦程序搭建网站实例教程,想尝试搭建网站的朋友赶紧保存了...