邮件Demo(SSL加密传输)

简介: private final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; private String smtpServer; // SMTP服务器地址 private String port; // 端口 private String username; // 登录SMTP服务器的用户名 private String password; // 登录SMTP服务器的密码 private List<String> recipients = new ArrayList<String>(); // 收件人地址集合

package javamail.zifangsky.com;

import java.io.UnsupportedEncodingException;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Address;

import javax.mail.BodyPart;

import javax.mail.Multipart;

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 SendMailBySSL {

 private final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

 private String smtpServer; // SMTP服务器地址

 private String port; // 端口

 private String username; // 登录SMTP服务器的用户名

 private String password; // 登录SMTP服务器的密码

 private List<String> recipients = new ArrayList<String>(); // 收件人地址集合

 private String subject; // 邮件主题

 private String content; // 邮件正文

 private List<String> attachmentNames = new ArrayList<String>(); // 附件路径信息集合

 public SendMailBySSL() {

 }

 public SendMailBySSL(String smtpServer, String port, String username,

     String password, List<String> recipients, String subject,

     String content, List<String> attachmentNames) {

   this.smtpServer = smtpServer;

   this.port = port;

   this.username = username;

   this.password = password;

   this.recipients = recipients;

   this.subject = subject;

   this.content = content;

   this.attachmentNames = attachmentNames;

 }

 public void setSmtpServer(String smtpServer) {

   this.smtpServer = smtpServer;

 }

 public void setPort(String port) {

   this.port = port;

 }

 public void setUsername(String username) {

   this.username = username;

 }

 public void setPassword(String password) {

   this.password = password;

 }

 public void setRecipients(List<String> recipients) {

   this.recipients = recipients;

 }

 public void setSubject(String subject) {

   this.subject = subject;

 }

 public void setContent(String content) {

   this.content = content;

 }

 public void setAttachmentNames(List<String> attachmentNames) {

   this.attachmentNames = attachmentNames;

 }

 /**

  * 进行base64加密,防止中文乱码

  * */

 public String changeEncode(String str) {

   try {

     str = MimeUtility.encodeText(new String(str.getBytes(), "UTF-8"),

         "UTF-8", "B"); // "B"代表Base64

   } catch (UnsupportedEncodingException e) {

     e.printStackTrace();

   }

   return str;

 }

 /**

  * 正式发邮件

  * */

 public boolean sendMail() {

   Properties properties = new Properties();

   properties.put("mail.smtp.host", smtpServer);

   properties.put("mail.smtp.auth", "true");

   properties.put("mail.smtp.socketFactory.class", SSL_FACTORY); //使用JSSE的SSL socketfactory来取代默认的socketfactory

   properties.put("mail.smtp.socketFactory.fallback", "false"); // 只处理SSL的连接,对于非SSL的连接不做处理

                               

   properties.put("mail.smtp.port", port);

   properties.put("mail.smtp.socketFactory.port", port);

   Session session = Session.getInstance(properties);

   session.setDebug(true);

   MimeMessage message = new MimeMessage(session);

   try {

    // 发件人

     Address address = new InternetAddress(username);

     message.setFrom(address);

    // 收件人

     for (String recipient : recipients) {

       System.out.println("收件人:" + recipient);

       Address toAddress = new InternetAddress(recipient);

       message.setRecipient(MimeMessage.RecipientType.TO, toAddress); // 设置收件人,并设置其接收类型为TO

       /**

        * TO:代表有健的主要接收者。 CC:代表有健的抄送接收者。 BCC:代表邮件的暗送接收者。

        * */

     }

    // 主题

     message.setSubject(changeEncode(subject));

    // 时间

     message.setSentDate(new Date());

     Multipart multipart = new MimeMultipart();

    // 添加文本

     BodyPart text = new MimeBodyPart();

     text.setText(content);

     multipart.addBodyPart(text);

    // 添加附件

     for (String fileName : attachmentNames) {

       BodyPart adjunct = new MimeBodyPart();

       FileDataSource fileDataSource = new FileDataSource(fileName);

       adjunct.setDataHandler(new DataHandler(fileDataSource));

       adjunct.setFileName(changeEncode(fileDataSource.getName()));

       multipart.addBodyPart(adjunct);

     }

    // 清空收件人集合,附件集合

     recipients.clear();

     attachmentNames.clear();

     message.setContent(multipart);

     message.saveChanges();

   } catch (Exception e) {

     e.printStackTrace();

     return false;

   }

   try {

     Transport transport = session.getTransport("smtp");

     transport.connect(smtpServer, username, password);

     transport.sendMessage(message, message.getAllRecipients());

     transport.close();

   } catch (Exception e) {

     e.printStackTrace();

     return false;

   }

   return true;

 }

 public static void main(String[] args) {

   List<String> recipients = new ArrayList<String>();

//    recipients.add("123456789@qq.com");

   recipients.add("admin@zifangsky.cn");

   String subject = "这封邮件是为了测试SMTP的SSL加密传输";

   String content = "这是这封邮件的正文";

   List<String> attachmentNames = new ArrayList<String>();

   attachmentNames.add("C://Users//Administrator//Desktop//kali.txt");

   SendMailBySSL sendMailBySSL = new SendMailBySSL("smtp.163.com", "465",

       "youname@163.com", "youpassword", recipients, subject, content,

       attachmentNames);

   sendMailBySSL.sendMail();

 }

}


NorthS
+关注
目录
打赏
0
0
0
0
3
分享
相关文章
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
SSL/TLS证书**是一种用于加密网络通信的数字证书
SSL/TLS证书**是一种用于加密网络通信的数字证书
217 6
SSL/TLS:构建数字世界的加密长城
**协议演进:从网景实验室到全球标准** 1994年,网景公司推出SSL协议,首次实现40位密钥加密传输,开启网络安全新纪元。此后,SSL 3.0、TLS 1.0相继问世,至2018年TLS 1.3将握手速度提升60%,强制前向加密确保历史会话安全。TLS协议通过非对称加密、对称加密和证书信任链等多层架构保障通信安全。2014年POODLE漏洞促使全行业禁用SSL 3.0,催生防降级机制。
SSL/TLS:互联网通信的加密基石与安全实践
**简介:** 在数字化时代,互联网每天传输海量敏感数据,网络攻击频发。SSL/TLS协议作为网络安全的基石,通过加密技术确保数据安全传输。本文解析SSL/TLS的技术架构、密码学原理、应用场景及常见误区,探讨其在未来的发展趋势,强调持续演进以应对新型威胁的重要性。 SSL/TLS不仅保障Web安全,还广泛应用于API、邮件、物联网等领域,并遵循合规标准如PCI DSS和GDPR。
免费SSL证书:一键加密,守护网站安全
在互联网时代,网站安全至关重要。SSL证书是保护网站数据传输安全的核心工具,提供数据加密、提升信任度、提高搜索引擎排名及避免“不安全”警告等多重优势。现在,您可以通过JoySSL官网免费获取SSL证书,只需注册并填写注策码(230907),即可一键加密,轻松守护网站安全,提升用户体验和品牌形象。立即行动,为您的网站穿上“安全防护衣”!
68 11
《数字证书:互联网世界的"身份证"与"防盗门"》 ——揭秘网络安全背后的加密江湖
在2023年某深夜,上海陆家嘴金融公司机房遭遇黑客攻击,神秘青铜大门与九大掌门封印的玉牌突现,阻止了入侵。此门象征数字证书,保障网络安全。数字证书如验钞机识别假币,保护用户数据。它通过SSL/TLS加密、CA认证和非对称加密,构建安全通信。证书分为DV、OV、EV三类,分别适合不同场景。忽视证书安全可能导致巨额损失。阿里云提供一站式证书服务,助力企业部署SSL证书,迎接未来量子计算和物联网挑战。
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
83 10
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
108 10
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等