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

AFSim仿真系统—几何视角下的子系统交互机制解析

本文深入解析了AFSim仿真系统中子系统交互的几何机制。通过剖析世界坐标系、实体坐标系、部件坐标系等七层空间定位体系,阐述了传感器探测、目标指示等交互行为背后的几何原理与限制条件。掌握这套几何视角,是构建高保真、符合物理现实的AFSim仿真模型的关键,能有效避免坐标混乱、交互失效等常见问题。

terraform7cloud的博客 492

使用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

避坑指南:STM32H7不同DMA控制器(MDMA/DMA2D/BDMA)到底该用哪个?

本文深入解析STM32H7系列芯片的DMA控制器选型策略,涵盖MDMA、DMA2D、BDMA等不同控制器的架构原理与性能对比。通过实际项目案例,提供高速TCM数据搬运、GUI加速、低功耗传输等场景的选型决策树,并分享性能优化与调试技巧,帮助工程师避开常见陷阱,提升系统效率。

weixin_26876073的博客 447

仿人型机械臂逆运动学避坑指南:当末端三关节平行时如何处理奇异点

本文深入探讨了6R仿人型机械臂在末三轴平行结构下的逆运动学求解策略,重点分析了运动学逆解中的奇异点问题及其处理方法。通过MATLAB实现展示了D-H参数建模、几何解析法求解流程以及奇异点规避策略,为工业机器人开发提供了实用的数值算法方案和工程优化技巧。

sss66的博客 882

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

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

#维多利亚的秘密# 1937

eLabRadio软件无线电虚实结合仿真开发平台简介

在使用仿真平台时,不要关闭设备或断开设备与PC机之间的网络连接,否则,仿真平台将无法正常工作。注:采用eNodeX设备认证方式,当出现“设备不存在”的报错时,请检查计算机IP是否和硬件设备IP处于同一网段,或者是否是先连接好网线,再开启硬件设备的。①此登录方式下,需要先建立软件与硬件的通信:在登录窗口点击【网络配置】,参照下图输入设备IP,服务器地址无需设置,设置完成后点击确认,此时登录界面无需设置账号密码;,拷贝到电脑上,使用管理员权限运行setup.exe,下一步直到安装完成,桌面会生成快捷方式。

weixin_55349105的博客 6319

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

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

weixin_39893205的博客 559

用Bus Hound和MIDIOX抓包分析USB MIDI数据流:从硬件接口到软件解析的完整实战

本文详细介绍了如何使用Bus Hound和MIDIOX工具抓包分析USB MIDI数据流,从硬件接口到软件解析的完整实战过程。通过解析MIDI协议、捕获Note On/Off事件、控制变更消息等实例,帮助开发者深入理解音乐数字接口的底层通信机制,并提供了常见问题的解决方案和调试技巧。

weixin_42692935的博客 406

LabVIEW调用.so文件的方法

LabVIEW调用.so文件的方法

m0_37878912的博客 3024

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

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

weixin_30412167的博客 423

收放卷伺服控制系统详细算法介绍(电子齿轮+张力PID卷绕轴控制功能块)

收放卷控制系统涉及的内容非常多,这里我们介绍全伺服系统利用电子齿轮指令实现主从轴的比例随动速度控制,收放卷控制算法介绍常用链接如下1、收放卷+排线控制收放卷+排线控制系统框图-优快云博客文章浏览阅读24次。1、收放卷前馈量计算FC收放卷前馈量计算FC(CODESYS ST源代码)-优快云博客文章浏览阅读16次。1、收放卷前馈量计算FC(博途PLC):收放卷前馈量计算FC(梯形图+SCL代码)-优快云博客文章浏览阅读534次。2、收放卷前馈量计算FC。

RXXW_Dor的博客 3122

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

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

weixin_34335458的博客 389

Arduino、ESP32驱动BMP390L数字大气压传感器(压力传感器)

BMP390L是一款博世新研发的工业级专用数字气压传感器,具有极高的温度稳定性、低漂移、低功耗。

不脱发的程序猿 2007

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

在网上利用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

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

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

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

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

weixin_30737433的博客 117

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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、付费专栏及课程。

余额充值