使用Jmail发送SSL邮件

利用jmail qq邮箱发邮件 报错 解决方法 利用java的jmail,登录qq邮箱发邮件时遇到下面几个问题,分享一下解决方法。 1. qq需要使用ssl  解决方法:使用有ssl安全认证的代码public void setSSLSecurity(){ String SSL_FACTORY="javax.net.ssl.SSLSocketFactory"; props.setProperty("mail. 阅读详情

package org.dreams.mail;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.SendFailedException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.URLName;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import com.sun.mail.smtp.SMTPAddressFailedException;
import com.sun.mail.smtp.SMTPAddressSucceededException;
import com.sun.mail.smtp.SMTPSendFailedException;
import com.sun.mail.smtp.SMTPTransport;

public class JmailSSLSender {

    public static void main(String[] argv) {
        System.setProperty("javax.net.ssl.trustStore", "c://javalib//ssl//mail");//密钥存放的位置
        System.setProperty("javax.net.ssl.trustStorePassword", "打开密钥文件的密码");

        String to = "收信者地址";
        String subject = "hello";//邮件标题
        String from = "送信者地址";
        String cc = "抄送者地址";
        String bcc = null;
        String url = null;

        String mailhost = "smtp.XXX.com";//邮件服务器地址
        String mailer = "JmailSSLSender";
        String file = null;
        String protocol = null;
        String host = "smtp.XXX.com";
        String user = "用户名";
        String password = "密码";

        String record = null; // name of folder in which to record mail
        boolean debug = true;
        boolean verbose = true;
        boolean auth = true;
        boolean ssl = true;
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        int optind;

        try {

            Properties props = System.getProperties();
            if (mailhost != null)
                props.put("mail.smtp.host", mailhost);

            if (auth) {
                if (ssl) {
                    props.put("mail.smtps.auth", "true");//SSL连接使用的属性
                } else {
                    props.put("mail.smtp.auth", "true");//普通连接的属性
                }

            }

            // Get a Session object
            Session session = Session.getInstance(props, new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("用户名", "密码");
                }
            });

            if (debug) {
                session.setDebug(true);
            }

            // construct the message
            Message msg = new MimeMessage(session);
            if (from != null)
                msg.setFrom(new InternetAddress(from));
            else
                msg.setFrom();

            msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
            if (cc != null)
                msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc, false));
            if (bcc != null)
                msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(bcc, false));

            msg.setSubject(subject);

            String text = "i am liu!";//collect(in);

            if (file != null) {
                // Attach the specified file.
                // We need a multipart message to hold the attachment.
                MimeBodyPart mbp1 = new MimeBodyPart();
                mbp1.setText(text);
                MimeBodyPart mbp2 = new MimeBodyPart();
                mbp2.attachFile(file);
                MimeMultipart mp = new MimeMultipart();
                mp.addBodyPart(mbp1);
                mp.addBodyPart(mbp2);
                msg.setContent(mp);
            } else {
                // If the desired charset is known, you can use
                // setText(text, charset)
                msg.setText(text);
            }

            msg.setHeader("X-Mailer", mailer);
            msg.setSentDate(new Date());

            // send the thing off
            /*
             * The simple way to send a message is this:
             *
             Transport.send(msg);
             *
             * But we're going to use some SMTP-specific features for
             * demonstration purposes so we need to manage the Transport
             * object explicitly.
             */
            SMTPTransport t = (SMTPTransport) session.getTransport(ssl ? "smtps" : "smtp");
            try {
                if (auth)
                    t.connect(mailhost, user, password);
                else
                    t.connect();

                t.sendMessage(msg, msg.getAllRecipients());
            } finally {
                if (verbose)
                    System.out.println("Response: " + t.getLastServerResponse());
                t.close();
            }

            System.out.println("/nMail was sent successfully.");

            // Keep a copy, if requested.

            if (record != null) {
                // Get a Store object
                Store store = null;
                if (url != null) {
                    URLName urln = new URLName(url);
                    store = session.getStore(urln);
                    store.connect();
                } else {
                    if (protocol != null)
                        store = session.getStore(protocol);
                    else
                        store = session.getStore();

                    // Connect
                    if (host != null || user != null || password != null)
                        store.connect(host, user, password);
                    else
                        store.connect();
                }

                // Get record Folder.  Create if it does not exist.
                Folder folder = store.getFolder(record);
                if (folder == null) {
                    System.err.println("Can't get record folder.");
                    System.exit(1);
                }
                if (!folder.exists())
                    folder.create(Folder.HOLDS_MESSAGES);

                Message[] msgs = new Message[1];
                msgs[0] = msg;
                folder.appendMessages(msgs);

                System.out.println("Mail was recorded successfully.");
            }

        } catch (Exception e) {
            if (e instanceof SendFailedException) {
                MessagingException sfe = (MessagingException) e;
                if (sfe instanceof SMTPSendFailedException) {
                    SMTPSendFailedException ssfe = (SMTPSendFailedException) sfe;
                    System.out.println("SMTP SEND FAILED:");
                    if (verbose)
                        System.out.println(ssfe.toString());
                    System.out.println("  Command: " + ssfe.getCommand());
                    System.out.println("  RetCode: " + ssfe.getReturnCode());
                    System.out.println("  Response: " + ssfe.getMessage());
                } else {
                    if (verbose)
                        System.out.println("Send failed: " + sfe.toString());
                }
                Exception ne;
                while ((ne = sfe.getNextException()) != null && ne instanceof MessagingException) {
                    sfe = (MessagingException) ne;
                    if (sfe instanceof SMTPAddressFailedException) {
                        SMTPAddressFailedException ssfe = (SMTPAddressFailedException) sfe;
                        System.out.println("ADDRESS FAILED:");
                        if (verbose)
                            System.out.println(ssfe.toString());
                        System.out.println("  Address: " + ssfe.getAddress());
                        System.out.println("  Command: " + ssfe.getCommand());
                        System.out.println("  RetCode: " + ssfe.getReturnCode());
                        System.out.println("  Response: " + ssfe.getMessage());
                    } else if (sfe instanceof SMTPAddressSucceededException) {
                        System.out.println("ADDRESS SUCCEEDED:");
                        SMTPAddressSucceededException ssfe = (SMTPAddressSucceededException) sfe;
                        if (verbose)
                            System.out.println(ssfe.toString());
                        System.out.println("  Address: " + ssfe.getAddress());
                        System.out.println("  Command: " + ssfe.getCommand());
                        System.out.println("  RetCode: " + ssfe.getReturnCode());
                        System.out.println("  Response: " + ssfe.getMessage());
                    }
                }
            } else {
                System.out.println("Got Exception: " + e);
                if (verbose)
                    e.printStackTrace();
            }
        }
    }

    public static String collect(BufferedReader in) throws IOException {
        String line;
        StringBuffer sb = new StringBuffer();
        while ((line = in.readLine()) != null) {
            sb.append(line);
            sb.append("/n");
        }
        return sb.toString();
    }
}


 http://blog.youkuaiyun.com/kknd97/archive/2006/10/19/1340350.aspx

JMail 4.5邮件系统开发与实战应用 JMail 4.5是一款功能强大的跨平台邮件组件,广泛应用于各类服务器端邮件处理任务。它不仅支持主流编程语言如C#、Java、Python等,还可在Windows、Linux及macOS系统上无缝部署。其核心功能涵盖邮件发送(SMTP)、接收(POP3/IMAP)以及安全加密传输(SSL/TLS),适用于企业级邮件系统、自动化通知、以及Web应用集成。JMail 4.5通过统一的API接口屏蔽了底层协议复杂性,使开发者能够快速构建高效、稳定的邮件处理模块,为后续章节的深入实践奠定坚实基础。 阅读详情

相关推荐

VB与JMail组件实现邮件发送全面指南

JMail 是一款广泛使用的邮件发送组件,它允许开发者在多种编程语言中,包括 VB.NET,快速而简便地集成邮件发送功能。通过使用 JMail,开发者可以轻松地编写代码来发送标准的邮件,同时,它也支持更高级的功能,例如发送附件、HTML邮件、纯文本邮件以及邮件列表的管理。JMail是一个流行的邮件发送组件,它可以集成到ASP、ASP.NET、ColdFusion和VB等应用程序中。使用JMail,开发者可以轻松地添加邮件发送功能,无需担心底层的邮件传输协议(如SMTP)的复杂性。

weixin_42610671的博客 1447

spring中javaMail使用ssl的方法发送邮件,javaMail导入证书,忽略证书的方法

使用配置 ## 基础邮箱配置(每个环境可以覆盖配置) # 发送者的邮箱地址 spring.mail.username=xxxx # 发送者的邮箱密码 spring.mail.password=xxx # 发送邮箱对应的SMTP地址 spring.mail.host=xxxx spring.mail.port=465 发送邮件是出现报错 sun.security.validator.ValidatorException: PKIX path building failed: sun.security.

huang007guo的专栏 8283

基于JMail组件的在线邮件发送系统

在当今的数字化世界中,邮件已成为沟通的重要工具,尤其在商务和日常通信中扮演着不可或缺的角色。在线邮件发送系统为用户提供了便捷的邮件发送服务,无论是个人邮件还是企业邮件,都能通过互联网快速、高效地送达至收件人邮箱。它不仅优化了邮件发送的流程,还提高了邮件系统整体的可用性和可靠性。本章将带领读者理解在线邮件发送系统的基本概念、工作原理以及它在现代IT环境中的重要性。我们会从一个高层次的视角来审视这一系统,为深入探讨其背后的技术细节做好准备。

weixin_30248619的博客 1108

【SpringBoot】(解决)阿里云服务器中发送邮件问题

在本地中能够发送邮箱,部署到阿里云却发不了??? 原本的application.properties邮箱配置 # 邮件协议 spring.mail.protocol=smtp # 网易邮箱 smtp 服务器地址 spring.mail.host=smtp.163.com spring.mail.port=25 # 发送人邮箱地址 spring.mail.username=xxxxx@163.com # 授权码 spring.mail.password=xxxxxxxxxx # 编码字符集 spring.ma

北海_南风 1703

Jmail邮件组件:免费高效的邮件发送解决方案

本文还有配套的精品资源,点击获取 简介:Jmail是一个用于服务器端邮件发送的免费组件,支持ASP.NET和PHP开发环境。它提供了简单易用的接口,支持SMTP、POP3和IMAP协议,并包含创建和发送邮件、多语言支持、SMTP身份验证、邮件模板、错误处理、日志记录和邮件队列管理等功能。组件安装简单,包含详细的使用文档和指南,特别适合需要邮件功能的开发者。 1. ...

weixin_30838971的博客 2037

JMAIL 4.3服务器端邮件组件开发与实战

JMAIL 4.3是一款广泛应用于企业级Web开发的服务器端邮件发送组件,支持高效、稳定的电子邮件传输功能。它不仅兼容多种开发环境,如ASP、PHP、.NET等,还提供了丰富的API接口,便于开发者灵活控制邮件发送与接收流程。随着版本的不断演进,JMAIL 4.3在安全性、稳定性和易用性方面均有显著提升,支持SMTP、POP3、SSL/TLS加密等主流邮件协议,满足现代邮件系统的多样化需求。本章将从基础概念出发,逐步深入其核心功能,为后续章节的实践操作打下坚实基础。

weixin_42509513的博客 1278

使用java mail(jmail)通过gmail的stmp发送邮件:SSL方式

[url]http://stackoverflow.com/questions/1990454/using-javamail-to-connect-to-gmail-smtp-server-ignores-specified-port-and-tries[/url] [code="java"]Transport transport = session.getTransport("smtps");...

pyzheng的专栏 1176

JMail邮件发送插件实操教程

在数字化时代,邮件已成为企业沟通不可或缺的一部分。JMail作为一个高效的邮件发送插件,为开发者提供了一个简单而强大的工具来集成邮件功能到他们的应用程序中。本章将介绍JMail的基本概念、特点以及其在现代邮件发送场景中的应用。

weixin_42360733的博客 1196

jmail 4.5使用gmail smtp ssl解决方法

现在很多email都没法提供smtp发信,但是gmail这个稳定的平台给了很多网站站长的一个希望。可惜就是smtp.gmail.com 是用ssl发送,一般的情况下asp+jmail是没法发送的,但是找了半天才找到以下的代码可以解决以上的问题。 jmail 使用gmail smtp.gmail.com 发送 package org.dreams.mail; import java.io.bu...

编程资料大全 1003

发邮件,支持SSL\TLS,支持Gmail、Hotmail、yahoo

项目中需要用到发邮件的功能,之前一直是用JMAIL做的,后来发现不支持GMAIL、Hotmail之类的邮箱,因为需要SSL\TLS验证,现在这份代码很好的实现了这一功能

jmail.dll在pb中的应用收发邮件

jmail.dll在pb中的应用收发邮件 1、注册jmail.dll 方法:在运行中输入: regsvr32 路径\jmail.dll 2、示例代码: oleobject jmail Jmail = Create OLEObject Jmail.ConnectToNewObject("JMail.Message") Jmail.Charset = ls_charset //中文用 “GB2312” Jmail.ISOEncodeHeaders = True Jmail.silent = True Jmail.Logging = True Jmail.From = ls_user //发件人邮箱 Jmail.FromName = ls_mail_fr //发件人 Jmail.Subject = ls_subject //邮件主题 Jmail.MailServerUserName = ls_user //发件邮箱登录账户 Jmail.MailServerPassword = ls_pwd //发件邮箱用户密码 Jmail.Priority = 3 //优先级 Jmail.AddRecipient(ls_mail_to) //收件人邮箱 Jmail.Body =ls_Text + "~r~n" //邮件内容 IF Jmail.Send(ls_host) THEN //ls_host为发件邮箱服务器 messagebox('Info',"发送成功!") ELSE messagebox('Info',"发送失败!") END IF Jmail.Close() Destroy Jmail

springcloud框架下的邮件发送

springcloud框架下的邮件发送 MailController: package com.xxx.alarm.controller; import com.xxx.alarm.service.JMailService; import com.xxx.commons.result.Result; import com.xxx.commons.result.ResultCodeEnum; import io.swagger.annotations.Api; import org.slf4j.Logger

weixin_43417378的博客 1502

华中科技大学 计算机组成原理 educoder Logisim平台 计算机数据表示实验

本文主要是对 计算机数据表示实验的笔记和相关Logisim平台的图,供大家学习交流使用。 需要源文件或者源代码,可以留言评论! 目录实验目的第1关:汉字国标码转区位码实验第2关:汉字机内码获取实验第3关:偶校验编码设计第4关:偶校验解码电路设计第5关:16位海明编码电路设计第6关:16位海明解码电路设计第7关:海明编码流水传输实验第8关:16位CRC并行编解码电路设计第9关:CRC编码流水传输实验实验结果: 实验目的 本实训将帮助同学们巩固对计算机中数据表示方法的理解,要求能设计汉字国标码与区位码之间的转换

weixin_48383580的博客 2万+

Jmail操作

Jmail邮箱发送系统简单案例(qq邮箱) 不多说,直接上代码: 需要的核心依赖jar javax.mail mail`在这里插入代码片` 1.4.5 ## 详细java代码 import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import ja...

掳走专栏 269

IBM Storwize V3700存储维护实战:硬盘更换、电源模块热插拔与带外管理IP配置

在企业IT基础设施中,存储阵列是数据持久化的核心组件,其稳定运行直接关系到业务连续性。存储阵列通常采用RAID技术实现数据冗余,并通过热插拔、冗余电源等设计保障高可用性。带外管理则提供了独立于业务网络的硬件级监控与管理通道,是运维的关键手段。本次实战以一台IBM Storwize V3700存储阵列为例,详细记录了在业务低峰期,依据严谨的操作流程,对出现SMART预警的硬盘进行在线更换,并对有异响的冗余电源模块实施热插拔更换。针对管理界面强制要求设置VIP才能配置带外管理地址的限制,文章提供了通过SSH命令

weixin_29172963的博客 303

U3d WebGL使用ToLua

首先我们在编辑器模式下加入Tolua插件,然后配置修改到在编辑器模式下能够正常的运行。 同个U3d 插件Build出WebGL的工程,运行的时候你会发现(有些需要把这个WebGL工程放在一个HttpServer下面,直接本地访问index.html会被拒绝,让你使用http的格式)。 当要加载完的时候会出现 To use dlopen, you need to use Emscripten'...

qq_35267906的博客 2947

使用java mail(jmail)通过gmail的stmp发送邮件

原文网址: http://www.velocityreviews.com/forums/t141237-send-smtp-mail-using-javamail-with-gmail-account.html http://www.javaworld.com/javatips/jw-javatip115.html /* * Created on Feb 21, 2005 * */

437

Eigen 直线拟合/曲线拟合/圆拟合/椭圆拟合

使用Eigen库进行直线拟合是数据分析和科学计算中的常见任务,主要通过最小二乘法实现。该代码演示了二维空间中的直线拟合,输出斜率和截距。

深之JohnChen的专栏 1594

Jmail面面观

Jmail的主要参数列表 (1)Body(信件正文) : 字符串 如:JMail.Body = "这里可以是用户填写的表单内容,可以取自From。" (2)Charset(字符集,缺省为"US-ASCII") : 字符串 如:JMail.Charset = "US-ASCII" (3)ContentTransferEncoding :

allfuly的专栏 994

用Python爬虫抓取大宗交易成交数据:全面解析与实战代码

大宗交易是指在证券市场中,涉及大额买卖的交易。此类交易通常由机构投资者进行,其交易量较大,对市场的影响显著。大宗交易数据包含了买卖双方的成交价格、成交量等关键信息,这些数据对于投资者和分析师而言,具有重要的市场预测意义。Python爬虫是一种自动化抓取互联网上数据的工具。通过爬虫,我们可以定期获取大宗交易数据,节省人工查询的时间。爬虫的工作原理通常包括:发送HTTP请求、获取响应数据、解析网页内容、提取关键信息、存储和展示数据。

2201_76125261的博客 417

YOLOv11 热力图可视化全流程:从模型解释到科研论证,让检测结果“有理可看”

无论是科研中需要严谨的模型解释,还是工业里要高效的缺陷定位,这套方法都能让你在“模型黑箱”与“业务需求”之间架起一座可视化的桥梁。别再让模型决策“无据可依”——现在就动手生成你的第一幅热力图,让 YOLOv11 的每一次检测都“有理可看”,用可视化的力量推动你的 AI 研究与落地走向深入!某团队在论文中通过热力图对比,证明其改进的注意力模块可使模型对小目标的关注区域更精准,实验论证说服力提升 50%;工业质检场景下,热力图帮助工程师快速定位模型漏检缺陷的原因——原来是对某类缺陷的特征关注不足。

m0_71589036的博客 677

Jmail的主要参数列表

(1)Body(信件正文) : 字符串 如:JMail.Body = "这里可以是用户填写的表单内容,可以取自From。" (2)Charset(字符集,缺省为"US-ASCII") : 字符串 如:JMail.Charset = "US-ASCII" (3)ContentTransferEncoding : 字符串 指定内容传送时的编码方式,缺省是"Quoted-Printable" 如

cocodo 427

Cesium+Vue3教程(003):基于Vue3的Cesium自定义地图和地图叠加

在 Cesium 中,是用于加载地表影像图层的核心接口。通过它,您可以将各种地图服务(如卫星影像、街道地图、自定义瓦片等)加载到 Cesium 的地球上。Cesium 提供了多个内置的。

WwLK123的博客 634

JMail发送邮件组件用法

先看一个简单的例子:%    Jmail4.3 应用事例 (4.3 以前参数差不多)        建立发送邮件的对象 (JMAIL4.0 Server.CreateObject("JMAIL.SMTPMail"))    Set Jmail = Server.CreateObJect("Jmail.Message")    Jmail.silent = true 屏蔽

TonyChi 's Tech Space 3770

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: jmail组件的限制
下一篇: System.Net.Mail 简介
marklr
博客等级 码龄19年 52粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值