怎么使用Java自带的mail API实现邮件发送功能 您所在的位置:网站首页 Java有哪些方法可以将组件放到内容窗格中 怎么使用Java自带的mail API实现邮件发送功能

怎么使用Java自带的mail API实现邮件发送功能

2023-05-13 19:07| 来源: 网络整理| 查看: 265

怎么使用Java自带的mail API实现邮件发送功能 发布时间:2023-05-06 11:18:21 来源:亿速云 阅读:98 作者:iii 栏目:开发技术

本篇内容主要讲解“怎么使用Java自带的mail API实现邮件发送功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Java自带的mail API实现邮件发送功能”吧!

需求:

邮件发送 使用jdk源生API——java.mail实现发邮件功能

以下代码即可发送邮件,以qq邮箱为例package com.example.demo.emailInfo; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.io.UnsupportedEncodingException; import java.util.*; public class SendEmailInfo {     public static void main(String[] args) throws MessagingException, UnsupportedEncodingException {         String smtpServer = "smtp.qq.com";         String username = "[email protected]";         //这里是你开通smtp协议的授权码,若是公司自定义服务器,可无需授权码,但需要配置证书,文章后面有详解         String password = "***********";         String receiver = "[email protected]";         String receiver2 = "低调AI实验室@126.com";         //这里的配置可以自己抽取成工具         Properties properties = new Properties();         Map map = new HashMap();         //常用smtp使用配置,可以在其他文章中获取:这里针对使用qq发送邮件         map.put("mail.transport.protocol","smtp");         map.put("mail.smtp.host",smtpServer);         map.put("mail.smtp.auth","true");         map.put("mail.smtp.port","465");         map.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");         map.put("mail.smtp.socketFactory.fallback",false);         map.put("mail.smtp.socketFactory.port","465");         map.put("mail.smtp.starttls.enable","true");         properties.putAll(map);         //创建会话对象,用户邮件和服务器的交互         Session session = Session.getDefaultInstance(properties); //        session.setDebug(true); //查看发送邮件的log         //创建一邮件         MimeMessage message = new MimeMessage(session);         InternetAddress senderAddress = new InternetAddress(username,"设置自定义发件人名称","UTF-8");         message.setFrom(senderAddress);         message.setRecipient(Message.RecipientType.TO,new InternetAddress(receiver,"收件人自定义名称","UTF-8"));         message.setSubject("设置发送的主题:比如:邀请函","UTF-8");         message.setContent("内容:邀请你和我一起约会,在屋顶吹晚风,看星星,吃水果","text/html;charset=UTF-8");         message.setSentDate(new Date());         message.saveChanges();         //用session 获取传输对象,然后连接发件人         Transport transport = session.getTransport();         transport.connect(username,password);         transport.sendMessage(message,message.getAllRecipients());         transport.close();         System.out.println("发送成功");     } }

若要使用企业内部自搭服务器,则需要在jdk文件中配置一个授权证书,操作如下:

/*  * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.  *  * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions  * are met:  *  *   - Redistributions of source code must retain the above copyright  *     notice, this list of conditions and the following disclaimer.  *  *   - Redistributions in binary form must reproduce the above copyright  *     notice, this list of conditions and the following disclaimer in the  *     documentation and/or other materials provided with the distribution.  *  *   - Neither the name of Sun Microsystems nor the names of its  *     contributors may be used to endorse or promote products derived  *     from this software without specific prior written permission.  *  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  */   import java.io.*; import java.net.URL;   import java.security.*; import java.security.cert.*;   import javax.net.ssl.*;   public class InstallCert {       public static void main(String[] args) throws Exception {     String host;     int port;     char[] passphrase;     if ((args.length == 1) || (args.length == 2)) {         String[] c = args[0].split(":");         host = c[0];         port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);         String p = (args.length == 1) ? "changeit" : args[1];         passphrase = p.toCharArray();     } else {         System.out.println("Usage: java InstallCert [:port] [passphrase]");         return;     }       File file = new File("jssecacerts");     if (file.isFile() == false) {         char SEP = File.separatorChar;         File dir = new File(System.getProperty("java.home") + SEP             + "lib" + SEP + "security");         file = new File(dir, "jssecacerts");         if (file.isFile() == false) {         file = new File(dir, "cacerts");         }     }     System.out.println("Loading KeyStore " + file + "...");     InputStream in = new FileInputStream(file);     KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());     ks.load(in, passphrase);     in.close();       SSLContext context = SSLContext.getInstance("TLS");     TrustManagerFactory tmf =         TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());     tmf.init(ks);     X509TrustManager defaultTrustManager = (X509TrustManager)tmf.getTrustManagers()[0];     SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);     context.init(null, new TrustManager[] {tm}, null);     SSLSocketFactory factory = context.getSocketFactory();       System.out.println("Opening connection to " + host + ":" + port + "...");     SSLSocket socket = (SSLSocket)factory.createSocket(host, port);     socket.setSoTimeout(10000);     try {         System.out.println("Starting SSL handshake...");         socket.startHandshake();         socket.close();         System.out.println();         System.out.println("No errors, certificate is already trusted");     } catch (SSLException e) {         System.out.println();         e.printStackTrace(System.out);     }       X509Certificate[] chain = tm.chain;     if (chain == null) {         System.out.println("Could not obtain server certificate chain");         return;     }       BufferedReader reader =         new BufferedReader(new InputStreamReader(System.in));       System.out.println();     System.out.println("Server sent " + chain.length + " certificate(s):");     System.out.println();     MessageDigest sha1 = MessageDigest.getInstance("SHA1");     MessageDigest md5 = MessageDigest.getInstance("MD5");     for (int i = 0; i > 4]);         sb.append(HEXDIGITS[b & 15]);         sb.append(' ');     }     return sb.toString();     }       private static class SavingTrustManager implements X509TrustManager {       private final X509TrustManager tm;     private X509Certificate[] chain;       SavingTrustManager(X509TrustManager tm) {         this.tm = tm;     }       public X509Certificate[] getAcceptedIssuers() {         throw new UnsupportedOperationException();     }       public void checkClientTrusted(X509Certificate[] chain, String authType)         throws CertificateException {         throw new UnsupportedOperationException();     }       public void checkServerTrusted(X509Certificate[] chain, String authType)         throws CertificateException {         this.chain = chain;         tm.checkServerTrusted(chain, authType);     }     }   }证书生成步骤:

1、完整复制以上Java代码,放到桌面上新建了一个跟类名相同的.java文件,并放入新建文件夹中

怎么使用Java自带的mail API实现邮件发送功能

2、cmd打开命令窗口,编译:javac InstallCert.java文件

怎么使用Java自带的mail API实现邮件发送功能

怎么使用Java自带的mail API实现邮件发送功能

3、运行:java InstallCert Java请求出错的站点URL

怎么使用Java自带的mail API实现邮件发送功能

即自行搭建的服务器域名:例如:smtp.AIRow.com

4、然后输入1退出。

5、检查桌面,会生成一个jssecacerts的文件,把该文件设置到你的JDK下的/jre/lib/security目录下即可

6、若要上线功能,需要运维添加并导入证书。

7、若不使用企业或个人自搭服务器发送邮件,则无需配置证书。

到此,相信大家对“怎么使用Java自带的mail API实现邮件发送功能”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读: php如何使用SAE原生Mail类实现各种类型邮件发送 怎么在PHP中正确的使用mail()函数

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mail api java 上一篇新闻:Java CountDownLatch计数器与CyclicBarrier循环屏障怎么定义 下一篇新闻:java怎么使用tess4j进行图片文字识别功能 猜你喜欢 为什么不推荐使用BeanUtils属性转换工具 怎么展示html格式的商品详情 C#的DateTime是什么 Java中join有什么用 Python面向对象编程怎么理解 JAVA变量和数据类型的知识点有哪些 IO的五种模型是什么 如何实现Groovy的本地安装和Eclipse插件的配置 如何编写Flink Job主程序 实用的Shell脚本有哪些


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有