使用JavaMail发送邮件,465端口开启ssl加密传输

package com.wangxin.test;

import java.security.Security;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * javaMail的邮件工具类
 * @author wangXgnaw
 *
 */
public class MailUtil {

    /**
     * 使用加密的方式,利用465端口进行传输邮件,开启ssl
     * @param to    为收件人邮箱
     * @param message    发送的消息
     */
    public static void sendEmil(String to, String message) {
        try {
            Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
            final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
            //设置邮件会话参数
            Properties props = new Properties();
            //邮箱的发送服务器地址
            props.setProperty("mail.smtp.host", "smtp.sina.com");
            props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
            props.setProperty("mail.smtp.socketFactory.fallback", "false");
            //邮箱发送服务器端口,这里设置为465端口
            props.setProperty("mail.smtp.port", "465");
            props.setProperty("mail.smtp.socketFactory.port", "465");
            props.put("mail.smtp.auth", "true");
            final String username = "发送者邮箱用户名";
            final String password = "发送者邮箱密码或者邮箱授权码";
            //获取到邮箱会话,利用匿名内部类的方式,将发送者邮箱用户名和密码授权给jvm
            Session session = Session.getDefaultInstance(props, new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });
            //通过会话,得到一个邮件,用于发送
            Message msg = new MimeMessage(session);
            //设置发件人
            msg.setFrom(new InternetAddress("发件人邮箱"));
            //设置收件人,to为收件人,cc为抄送,bcc为密送
            msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
            msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(to, false));
            msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(to, false));
            msg.setSubject("邮件主题");
            //设置邮件消息
            msg.setText(message);
            //设置发送的日期
            msg.setSentDate(new Date());

            //调用Transport的send方法去发送邮件
            Transport.send(msg);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}
时间: 2024-10-25 10:00:40

使用JavaMail发送邮件,465端口开启ssl加密传输的相关文章

怎么让maillog日志记录smtp是使用25端口还是465端口(SSL加密方式)

怎么让maillog日志记录smtp是使用25端口还是465端口(SSL加密方式): 1.修改配置文件 [[email protected] log]# vi /etc/postfix/master.cf 备注:我这里smtps表示ssl方式,然后加一个syslog_name字段指定名称即可. 2.重新加载postfix服务 /etc/init.d/kkmail_postfix status 3.查看日志确认 原文地址:http://blog.51cto.com/net881004/210845

MySQL8开启ssl加密

1 概述 MySQL从5.7开始默认开启SSL加密功能,进入MySQL控制台后输入status可以查看ssl的状态,出现下图表示在使用ssl: 另外,ssl加密需要密钥与证书,可以使用openssl手动生成或使用mysql_ssl_rsa_setup自动生成,这里使用了mysql_ssl_rsa_setup. 下面从安装开始. 2 安装(可选) 系统CentOS,直接使用yum安装(编译安装可以看这里),先用list查看一下: 这里的版本是8.0.17,不算太旧,就不去官网下载了,直接insta

MySQL主从ssl加密传输报错解决

案例:今天实施MySQL主从+SSL加密传输时候,master为slave签署证书有一个小小问题: failedto update database TXT_DBerror number 2 一开始没留意,最后导致在slave通过证书连接master时候报错证书错误.仔细检查才看到错误. 1.报错原因: This thing happens when certificates share common data. You cannot have two  certificates that lo

Vsftpd支持SSL加密传输

ftp传输数据是明文,弄个抓包软件就可以通过数据包来分析到账号和密码,为了搭建一个安全性比较高ftp,可以结合SSL来解决问题 SSL(Secure Socket Layer)工作于传输层和应用程序之间.作为一个中间层,应用程序只要采用SSL提供的一套SSL套接字API来替换标准的Socket套接字,就可以把程序转换为SSL化的安全网络程序,在传输过程中将由SSL协议实现数据机密性和完整性的保证.SSL取得大规模成功后,IETF将SSL作了标准化,并将其称为TLS(Transport Layer

基于ssl加密传输的vsftpd

主要适用于生产线上公网对外服务的ftp服务器 1.ftp有两种安全传输方式: ftps=ftp+ssl/tls Sftp=openssh,subsystem,sftp  基于ssh 2.基本ftps流程: 创建一个私有CA,由CA创建证书给vsftpd,再修改vsftpd配置文件. 3.相关操作流程: [[email protected] vsftpd]# cd /etc/pki/CA/ [[email protected] CA]# ls certs  crl  newcerts  priva

.net mvc 站点自带简易SSL加密传输

因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net 解密返回后端.net用rsa/aes 或 rsa/des加密,前端cryptojs解密 图示: 数据发送加密: 返回数据加密: 开源代码分享:https://github.com/guandy/NetSSL 现只是简易抽出,如果后续需求量大可考虑做成组件 原文地址:https://www.cnblogs.com/guandy2018/p/99677

阿里云服务器 发送邮箱 STMP 25端口 465端口问题 Javamail 25被禁用

我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了JDK1.7 还是不行,所以这里排除了JDK的原因. 那么问题来了,是否25端口不能连接适用喃? 然后在终端输入命令行 ,可测试25端口是否可连接. telnet smtp.163.com 25 返回成功 说明你的服务器 是没有封掉25端口的.上面的图是我自己的电脑,当然能连通. 当换到服务器测试的

JavaMail实现收发邮件(五)使用SSL实现加密传输

一 概念简介 Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听.一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境.只要3.0版本以上之I.E.或Netscape浏览器即可支持SSL.当前版本为3.0.它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输.(PS:来至百度百科) 二 在JavaM

使用javamail发送邮件03

使用java发送邮件,这里发件是使用qq邮箱发送:如果使用其他类型邮箱,将qq相关的信息改成对应的邮箱: 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.A