java发送email
package com.assess.util; import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties; import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
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; public class SendmailUtil {
/*
* 参考此文章
* http://www.cnblogs.com/xdp-gacl/p/4216311.html
*
*
* smtp.sohu.com 搜狐邮箱主机
* smtp.163.com 163邮箱主机,默认端口25
* smtp.qq.com qq邮箱主机
* */ /**
* from 发件人邮箱
* passwd 发件人邮箱密码
* to 收件人邮箱
* subject 主题
* txt 内容
* files 附件
* host 服务主机
* protocol 协议 (smtp)
* auth 身份验证(true)
* */
public static boolean send(String from,String passwd,String to,
String subject, String txt,List<File> files,
String host,String protocol,String auth) { try {
Properties prop = new Properties();
prop.setProperty("mail.host", host);
prop.setProperty("mail.transport.protocol", protocol);
prop.setProperty("mail.smtp.auth", auth);
//使用JavaMail发送邮件的5个步骤
//1、创建session
Session session = Session.getInstance(prop);
//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
//2、通过session得到transport对象
Transport ts = session.getTransport();
//3、使用邮箱的用户名和密码连上邮件服务器,
// 发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,
// 用户名和密码都通过验证之后才能够正常发送邮件给收件人。
ts.connect(host, from, passwd);
//4、创建邮件
Message message = createMixedMail(session, from, to, subject, txt, files);
//5、发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close(); }catch(Exception e) {
return false;
}
return true;
} /**
* 发送文字、附件的邮件
* */
public static MimeMessage createMixedMail(Session session,String from,String to,String subject,String txt,List<File> files) throws Exception {
//创建邮件
MimeMessage message = new MimeMessage(session); //设置邮件的基本信息
message.setFrom(new InternetAddress(from));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject); //正文
MimeBodyPart text = new MimeBodyPart();
text.setContent(txt,"text/html;charset=UTF-8"); //图片
// MimeBodyPart image = new MimeBodyPart();
// image.setDataHandler(new DataHandler(new FileDataSource("src\\check.png")));
// image.setContentID("aaa.jpg"); //附件
List<MimeBodyPart> mimeBodyParts = new ArrayList<MimeBodyPart>();
for(int i=;i<files.size();i++) {
MimeBodyPart attach = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource(files.get(i)));
attach.setDataHandler(dh);
attach.setFileName(MimeUtility.encodeWord(dh.getName()));
mimeBodyParts.add(attach);
} //描述关系:正文和图片
MimeMultipart mp1 = new MimeMultipart();
mp1.addBodyPart(text);
// mp1.addBodyPart(image);
mp1.setSubType("related"); //描述关系:正文和附件
MimeMultipart mp2 = new MimeMultipart();
for(int i=;i<mimeBodyParts.size();i++) {
mp2.addBodyPart(mimeBodyParts.get(i));
}
// mp2.addBodyPart(attach2); //代表正文的bodypart
MimeBodyPart content = new MimeBodyPart();
content.setContent(mp1);
mp2.addBodyPart(content);
mp2.setSubType("mixed"); message.setContent(mp2);
message.saveChanges(); // message.writeTo(new FileOutputStream("D:\\MixedMail.eml"));
//返回创建好的的邮件
return message;
}
}
package com.assess.util; import java.io.File;
import java.util.ArrayList;
import java.util.List; public class Main { private static final String HOST = "smtp.163.com";
private static final String PROTOCOL = "smtp";
private static final String AUTH = "true"; private static final String USER_NAME = "135****920@163.com";//发件人邮箱
private static final String PASSWORD = "";//密码
private static final String RECRIVER ="139****893@qq.com";//接收人邮箱 public static void main(String[] args) {
List<File> files = new ArrayList<File>();
File f = new File("src\\备忘.rar");
File f2 = new File("src\\check.png");
files.add(f);
files.add(f2);
if(SendmailUtil.send(USER_NAME, PASSWORD, RECRIVER, "主题信息", "内容信息", files, HOST, PROTOCOL, AUTH)) { System.out.println("success");
}
} }
java发送email的更多相关文章
- java发送email一般步骤
java发送email一般步骤 一.引入javamail的jar包: 二.创建一个测试类,实现将要发送的邮件内容写入到计算机本地,查看是否能够将内容写入: public static void mai ...
- Java发送email的端口问题
Could not connect to SMTP host: smtp.***.com, port: 465, response: -1 使用Java发送email 的端口问题.一般使用25端口即可 ...
- java发送 email
public class EmailUtils implements IAction { private static Logger logger = Logger.getLogger(EmailUt ...
- java发送email(含代理方式,ssl方式,传统方式)
package spring.vhostall.com; import java.security.Security; import java.util.Date; import java.util. ...
- 用java发送email邮件例子
package com.hzk.mail; import java.net.MalformedURLException; import java.net.URL; import java.text.S ...
- Java发送Email邮件及SpringBoot集成
一:普通方式发送 1.导包 <!--Java MAil 发送邮件API--> <dependency> <groupId>javax.mail</groupI ...
- 关于java发送email
转载:https://blog.csdn.net/qq_32371887/article/details/72821291 1:使用JavaMail发送邮件 // 1.创建一个程序与邮件服务器会话对象 ...
- 廖雪峰Java13网络编程-2Email编程-1发送email
1.邮件发送 1.1传统邮件发送: 传统的邮件是通过邮局投递,从一个邮局到另一个邮局,最终到达用户的邮箱. 1.2电子邮件发送: 与传统邮件类似,它是从用户电脑的邮件软件(如outlook)发送到邮件 ...
- 使用spring 并加载模板发送Email 发邮件 java 模板
以下例子是使用spring发送email,然后加载到固定的模板,挺好的,大家可以试试 需要使用到spring-context 包 和 com.springsource.org.apache.veloc ...
随机推荐
- 【转】c#获取网页地址参数
假设当前页完整地址为:http://www.jbxue.com/aaa/bbb.aspx?id=5&name=kelli则: "http://"是协议名"www. ...
- C++11之lambda表达式
lambda表达式源于函数式编程的概念,它可以就地匿名定义目标函数或函数对象,不需要额外写一个命名函数或者函数对象.lambda表达式的类型在C++11中被称为"闭包类型",也可以 ...
- Java基础学习总结——Java对象的序列化和反序列化
一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...
- codevs 1021 玛丽卡(spfa)
题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们 ...
- angular使用post、get向后台传参的问题
一.问题的来源 我们都知道向后台传参可以使用get.put,其形式就类似于name=jyy&id=001.但是在ng中我却发现使用$http post进行异步传输的过程中后台是接收不到数据的. ...
- Bootstrap组件之响应式导航条
响应式导航条:在PC和平板中默认要显示所有的内容:但在手机中导航条中默认只显示“LOGO/Brand”,以及一个“菜单折叠展开按钮”,只有单击折叠按钮后才显示所有的菜单项. 基础class: .nav ...
- 理解CSV文件以及ABAP中的相关操作
在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...
- android SharedPreferences介绍
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstanceState保存一般使用 ...
- UIButton
//UIButton->UIControl->UIView //UIControl 带有操作的控件都是继承于它的 //UIButton 实例化 类方法实例化 //实例化时没有位置及大小 ...
- 【转载】ReactiveX 的理念和特点
原作者地址:http://www.open-open.com/lib/view/open1440166491833.html ReactiveX是Reactive Extensions的缩写,一般简写 ...