Java 发送邮件 java email
1. 下载依赖包JavaMailhttps://repo1.maven.org/maven2/javax/mail/mail/1.4.7/mail-1.4.7.jarActivation Frameworkhttps://repo1.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar2. 简单邮件(没有图片
·
1. 下载依赖包
方法一:
- JavaMail
- https://repo1.maven.org/maven2/javax/mail/mail/1.4.7/mail-1.4.7.jar
- Activation Framework
- https://repo1.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar
方法二:
- Maven
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
2. 简单邮件
(没有图片和附件,纯文本邮件)
-
要发送邮件,需要获得协议和支持, 开启SMTP/POP3服务(以QQ邮箱为例)
-
在QQ邮箱 ➡ 设置 ➡ 账户 : 开启SMTP/POP3服务
-
开启后即可得到一串授权码
-
//发送一封简单邮件
public class EmailTest01 {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
prop.setProperty("mail.host","smtp.qq.com"); //设置QQ邮件服务器
prop.setProperty("mail.transport.protocol","smtp"); //邮件发送协议
prop.setProperty("mail.smtp.auth","true"); //需要验证用户名密码
//QQ邮箱还需要设置 SSL加密, 加入以下代码即可(其他邮箱可以省略)
MailSSLSocketFactory mailSSLSocketFactory = new MailSSLSocketFactory();
mailSSLSocketFactory.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable","true");
prop.put("mail.smtp.ssl.socketFactory",mailSSLSocketFactory);
//使用java 发送邮件的5个步骤
//1. 创建定义整个应用程序所需的环境信息的Session对象
// QQ邮箱才有, 其他邮箱不需要
Session session = Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//发送人的 邮箱地址、授权码
return new PasswordAuthentication("xxxxx@qq.com","授权码");
}
});
//开启session的debug模式, 这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
//2. 通过session得到transport对象
Transport transport = session.getTransport();
//3. 使用邮箱的用户名和授权码连上邮件服务器
transport.connect("smtp.qq.com","xxxxx@qq.com","授权码");
//4. 创建邮件: 写邮件
//注意需要传递session
MimeMessage mimeMessage = new MimeMessage(session);
//邮件发件人
mimeMessage.setFrom(new InternetAddress("xxxxx@qq.com"));
//邮件收件人 (可以发给自己)
mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("xxxxxx@xxx.com"));
//邮件标题
mimeMessage.setSubject("Java Email Test");
//邮件内容,类型
mimeMessage.setContent("Java email test!","text/html;charset=utf-8");
//5. 发送邮件
transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
//关闭连接
transport.close();
}
}
3.复杂邮件
- 有图片和附件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q1BBv9l1-1627308986583)(Java 发送邮件.assets/1627284424427.png)]
-
Java发送带图片的邮件
- 带图片的邮件只在内容上和普通邮件有区别,将第四步的代码换做以下即可
//4. 创建邮件: 写邮件 //注意需要传递session MimeMessage mimeMessage = new MimeMessage(session); //邮件发件人 mimeMessage.setFrom(new InternetAddress("xxxxxxx@qq.com")); //邮件收件人 mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("xxxxxx@xxx.com")); //邮件标题 mimeMessage.setSubject("一个带图片的邮件测试"); //------------------图片邮件与普通文字邮件的区别只在内容上------------------ //邮件内容 //准备图片数据 MimeBodyPart image = new MimeBodyPart(); DataHandler dataHandler = new DataHandler(new FileDataSource("F:\\study\\java\\javaWeb\\fileUp\\email-java\\src\\img.png")); image.setDataHandler(dataHandler); //在body中放入这个处理的图片数据 image.setContentID("1.jpg"); //给图片设置一个id,在后面使用 //正文 MimeBodyPart text = new MimeBodyPart(); text.setContent("这是一封有图片的邮件: <img src='cid:1.jpg'/>","text/html;charset=utf-8"); //描述数据关系, 将数据放入一个块中 MimeMultipart mm = new MimeMultipart(); mm.addBodyPart(text); mm.addBodyPart(image); mm.setSubType("related"); //alternative / related / mixed //设置到消息中 mimeMessage.setContent(mm); mimeMessage.saveChanges(); //保存 //------------------------------------------------------------------------
-
带文本和图片和附件的邮件
// 调用封装的方法 //4. 创建邮件: 写邮件 封装到一个方法中 MimeMessage mimeMessage = imageMail(session);
public static MimeMessage imageMail(Session session) throws Exception { //注意需要传递session MimeMessage mimeMessage = new MimeMessage(session); //邮件发送人 mimeMessage.setFrom(new InternetAddress("xxxxxxx@qq.com")); //邮件收件人,可以自己给自己发 mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("xxxxxxx@xxx.com")); //邮件标题 mimeMessage.setSubject("邮件测试"); //--------------图片邮件与普通文字邮件的区别只在内容上-------------------------- //邮件内容 //准备图片数据 MimeBodyPart image = new MimeBodyPart(); DataHandler dataHandler = new DataHandler(new FileDataSource("F:\\study\\java\\javaWeb\\fileUp\\email-java\\src\\img.png")); image.setDataHandler(dataHandler); //在body中放入这个处理的图片数据 image.setContentID("1.jpg"); //给图片设置一个id,在后面使用 //正文 MimeBodyPart text = new MimeBodyPart(); text.setContent("这是一封复杂邮件: <img src='cid:1.jpg'/>","text/html;charset=utf-8"); //附件 MimeBodyPart file = new MimeBodyPart(); file.setDataHandler(new DataHandler(new FileDataSource("F:\\study\\java\\javaWeb\\fileUp\\email-java\\src\\hello.txt"))); file.setFileName("1.txt"); MimeBodyPart file2 = new MimeBodyPart(); file2.setDataHandler(new DataHandler(new FileDataSource("F:\\study\\java\\javaWeb\\fileUp\\email-java\\src\\db.properties"))); file2.setFileName("1.properties"); //设置文件 //描述数据关系, 将数据放入一个对象中 MimeMultipart mm = new MimeMultipart(); mm.addBodyPart(text); mm.addBodyPart(image); mm.setSubType("related"); //alternative / related / mixed MimeBodyPart bodyPart = new MimeBodyPart(); bodyPart.setContent(mm); //拼接附件 MimeMultipart allFile = new MimeMultipart(); allFile.addBodyPart(file); //附件1 allFile.addBodyPart(file2); //附件2 allFile.addBodyPart(bodyPart); //正文 allFile.setSubType("mixed"); //设置到消息中 mimeMessage.setContent(allFile); mimeMessage.saveChanges(); //保存 return mimeMessage; }
更多推荐
所有评论(0)