jmail 4.5使用gmail smtp ssl解决方法

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

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

jmail 使用gmail smtp.gmail.com 发送

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.gmail.com:465";//邮件服务器地址
        string mailer = "jmailsslsender";
        string file = null;
        string protocol = null;
        string host = "smtp.gmail.com:465";
        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();
    }
}

发邮件,支持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

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

DTW Barycenter Averaging(DBA)——平均序列求法

DBA该算法是用来求序列数据集SS的一致序列(平均序列)。由Franc-ois Petitjean提出的。目前,该方法求得的平均序列是最准确的。 假设一元组为S={s1,s2,⋯,sn}S={s1,s2,\cdots,sn},当SS中的元素为实数时,很容易求的SS的平均值: avg=s1+s2+⋯+snn(1) avg = \dfrac{s1 +s2+\cdots+sn}{n} \qquad\q

光怪陆离 1万+

使用Jmail发送SSL邮件

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;

ZENITH 3596

一步一步实现基于COMSOL的单模光纤波导仿真

一步一步实现基于COMSOL的单模光纤波导仿真,简单易懂,跟着博客就能实现

君莫笑lucky的博客 1万+

2025年最新Cesium学习示例:Cesium-Examples

2025年最新Cesium学习示例:Cesium-Examples

2403_88103571的博客 1011

在嵌入式系统添加邮件发送功能---支持带SSL的GMAIL邮箱

在嵌入式系统,特别是监控系统中,为了维护方便,当系统中发生异常事件时,我们系统需要通过网络给管理员发送日志或通过邮件方式批量升级嵌入式系统中的软件。而目前大多数的邮箱都需要支持SSL,给起嵌入式系统中添加邮件功能增加了难度,下面试图而通过openssl和ssmtp和mailx来在嵌入式系统中完成邮件发送功能,并对邮件方式批量升级嵌入式系统中的软件给出实现思路。 在嵌入式系统中实现以前,首先完

#维多利亚的秘密# 1937

数字签名(Digital Signature)技术详解:从原理到实践

数字签名技术是数字世界身份认证和数据完整性的核心保障。它结合非对称加密和哈希函数两大密码学技术,实现双重安全防护:哈希函数确保数据完整性,非对称加密确保签名不可伪造。签名过程包括发送方用私钥加密文件哈希值生成签名,接收方用公钥验证签名并比对哈希值。RSA、DSA、ECDSA等主流算法各有特点,适用于不同场景。公钥基础设施(PKI)通过数字证书和CA认证建立信任链,确保公钥真实性。这套技术体系支撑着电子合同、软件认证、在线交易等各类数字安全应用,是现代网络信任体系的基石。

guigenyi的专栏 1367

很遗憾,该服务器不支持 jmail 组件!,jmail组件注册以及权限设置问题

一、首先下载jmail最新免费版:JMail 4.5下载二、安装jmail:把JMail45_free.msi上传到服务器上安装,下一步下一步即可。为了今后备份方便可以安装到C盘。三、注册jmail:在运行里输入:regsvr32 "C:\Program Files\Dimac\w3JMail\jmail.dll"会提示注册成功即可。四、修改目录权限:此时用探针探测可能仍然提示不支持jmail组件...

weixin_39893205的博客 559

【报错解决】OpenClaw 报错 `openclaw: command not found`:全局命令未加入系统 PATH 的深度排查与修复指南

在国产AI工具链开发中,OpenClaw作为关键命令行工具常出现command not found报错。本文深度分析该问题的根源——Linux环境变量PATH未包含用户级安装目录(~/.local/bin)。通过四种解决方案(临时PATH修改、永久配置、软链接、虚拟环境处理)和排错Checklist,揭示"命令存在却找不到"的本质是路径配置问题,特别适用于Docker/国产Linux/非root环境。文中强调理解Linux工具链机制对国产AI开发的重要性,并指出这是开发者掌握环境

博客 5382

【华为OD机试真题 2025C卷】238、贪吃蛇 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025C卷】238、贪吃蛇 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华为od,

正在更新最新华为OD机试2025B卷,提供OJ在线刷题 196

C++ MFC集成JMail组件实现邮件收发与附件处理完整指南

在桌面应用开发中,邮件功能集成是常见需求,尤其在企业级内部工具开发场景。SMTP、POP3/IMAP等邮件协议涉及复杂的网络通信和MIME编码解析,直接使用Socket编程实现不仅开发周期长,且易出错。通过成熟的第三方组件封装这些底层细节,能大幅提升开发效率。JMail作为经典的ActiveX控件,凭借其与Windows COM技术的天然亲和力,为C++/MFC开发者提供了稳定可靠的邮件处理解决方案。它通过简单的属性和方法调用,即可实现邮件的发送、接收及附件管理,有效解决了编码、认证等繁琐问题。本文聚焦于J

weixin_30412167的博客 423

Android 编译系统(Build System)剖析

make是一种自动化构建工具,通过读取Makefile将源代码自动编译为可执行程序和库文件。

虎哥LoveDroid 2169

Windows 2003安装并注册jmail组件教程

一、首先下载jmail最新免费版:JMail 4.5下载 二、安装jmail:把JMail45_free.msi上传到服务器上安装,下一步下一步即可。为了今后备份方便可以安装到C盘。 三、注册jmail:在运行里输入:regsvr32 “C:\Program Files\Dimac\w3JMail\jmail.dll” 会提示注册成功即可。 四、修改目录权限: 此时用探针...

weixin_34335458的博客 389

手把手教你学 GPU SoC 芯片(9.3)--GPU SOC 功耗和热管理的动态电压和频率调整(DVFS)

通过动态电压和频率调整(DVFS),可以有效地管理GPU SoC的功耗和热管理。合理的DVFS策略不仅可以节省功耗,提高能效,还可以延长设备的使用寿命。

MHD0815的博客 1498

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

在网上利用JMail发送邮件

利用jMail免费的发送邮件(目前我只知道可以利用GMail服务器),一般的服务器都是要收取费用的,如163,如果有人知道还有其他的方法可以指导一下.package com.easyjf.core.support; import java.security.Security; import java.util.Date; import java.util.HashMap; import java.

suny_duan的专栏 1077

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

[轉]ASP+Jmail+163在线发送邮件系统

轉自:http://www.piaoyi.org/asp/ASP-Jmail-163-email.html 飘易今天给某网站留言板写了个在线发送邮件的功能,采用Jmail+ASP+163的smtp邮件服务器构成。 其实Jmail发送邮件是一个非常重要的功能,在Email网络营销方面,利用Jmail群发邮件是一门必须掌握的技术。对于需要验证会员信息,...

weixin_30737433的博客 117

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android发送邮件

在android上发送邮件方式: 第一种:借助GMail APP客户端,缺点是必须使用GMail帐号,有点是比较方便 不需要写很多代码,但是不是很灵活。 第二种:基于JMail实现,可以很灵活的自己设置各种属性,不需要GMail帐号 在第二种方式的实现之前,看一下JMail对EMail结构的划分: 基于SMTP协议发送EMail,所以客户端必须要知道SMTP的

GoodShot的专栏 1358

Android上发送带附件的邮件

准备工作-下载最新版本的JMail https://java.net/projects/javamail/pages/Home#Download_JavaMail_1.5.2_Release http://www.oracle.com/technetwork/java/javase/d...

chuifuhuo6864的博客 201

Android在发送带有附件的邮件

准备好工作了-下载最新的版本号JMailhttps://java.net/projects/javamail/pages/Home#Download_JavaMail_1.5.2_Releasehttp://www.oracle.com/technetwork/java/javase/downloads/index-135046.html在android上发送邮件方式:第一种:借助G...

aofan9566的博客 242

【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

Java javax.mail 发送邮件,支持ssl,参照springboot的邮件,手动连接服务器

public static String sendMail(ArrayList<String> recivers, String title, String content, int r) { try { if(email_user.length()<3 || email_pwd.length()<3 || smtp_server.length()<3 || smtp_port.length()<1) { CommonUtils.LogError("&.

2019想做自己的游戏的人加群95303036 945
上一篇: C# 利用Jmail接收邮件(属性说明)
下一篇: W3 Jmail 使用说明
marklr
博客等级 码龄19年 52粉丝 98原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值