Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >javax.mail.AuthenticationFailedException:服务器身份验证错误

javax.mail.AuthenticationFailedException:服务器身份验证错误
EN

Stack Overflow用户
提问于 2014-04-06 23:17:07
回答 2查看 7.1K关注 0票数 1

我试图使用Java通过Exchange (Office 365)发送邮件。以下是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.package;

import java.util.Locale;
import java.util.Properties;
import java.util.ResourceBundle;

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;
import javax.mail.internet.MimeMessage.RecipientType;

public class Mail {

    ResourceBundle rb = ResourceBundle.getBundle("settings", Locale.ENGLISH);

    public void sendMail(String body, String subject, String receipients) throws MessagingException ////this is used to send the emails
    {

        Message message = new MimeMessage(getSession());

        message.addRecipient(RecipientType.TO, new InternetAddress(receipients));
        message.addFrom(new InternetAddress[] { new InternetAddress(rb.getString("from")) });

        message.setSubject(subject);
        message.setContent(body, "text/plain");

        Transport.send(message);
    }

    private Session getSession() {
        Authenticator authenticator = new Authenticator();

        Properties properties = new Properties();
        System.out.println("Submitter : " + authenticator.getPasswordAuthentication().getUserName());
        properties.setProperty("mail.smtp.submitter", authenticator.getPasswordAuthentication().getUserName());
        properties.setProperty("mail.smtp.auth", "true");
        properties.setProperty("mail.smtp.starttls.enable","true");
        properties.setProperty("mail.smtp.host", "smtp.office365.com");
        properties.setProperty("mail.smtp.port", "587");

        return Session.getInstance(properties, authenticator);
    }

    private class Authenticator extends javax.mail.Authenticator {

        String username, password;
        public Authenticator() {
            username = rb.getString("from");
            password = rb.getString("password");    
        }

        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
    }

    public static void main(String[] args) {
        try {
            new Mail().sendMail("Testing Mail", "Test", "someuser@ymail.com");
            System.out.println("Mail sent");
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            System.out.println("Unable to send mail");
            e.printStackTrace();
        }
    }
}

当我运行这个程序时,控制台显示的是: :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>>>>Sending data EHLO HP-WIN8<<<<<<
>>>>>Sending data STARTTLS<<<<<<
>>>>>Sending data EHLO HP-WIN8<<<<<<
>>>>>Sending data AUTH LOGIN<<<<<<
>>>>>Sending data ImFzaGZhcS5tZW1vbkBzdHJlZWJvLmNvbSI=<<<<<<
>>>>>Sending data IlN1bmlAMTk5MSI=<<<<<<
>>>>>Sending data QUIT<<<<<<
Unable to send mail
javax.mail.SendFailedException: Send failure (javax.mail.AuthenticationFailedException: Error authenticating with server)
    at javax.mail.Transport.send(Transport.java:163)
    at javax.mail.Transport.send(Transport.java:48)
    at com.streebo.Mail.sendMail(Mail.java:33)
    at com.streebo.Mail.main(Mail.java:66)
Caused by: javax.mail.AuthenticationFailedException: Error authenticating with server
    at org.apache.geronimo.javamail.transport.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:402)
    at javax.mail.Service.connect(Service.java:265)
    at javax.mail.Service.connect(Service.java:85)
    at javax.mail.Service.connect(Service.java:70)
    at javax.mail.Transport.send(Transport.java:94)
    ... 3 more

我已经检查了我的邮件id和密码,他们是正确的,但我仍然得到这个例外。

请检查一下我的程序是否有问题。

EN

回答 2

Stack Overflow用户

发布于 2014-06-15 22:36:47

由于我在使用创建的gmail.com测试帐户时遇到了同样的问题(如果使用了正确的凭据),一个可能的原因是

您可能使用gmail / yahoo / hotmail托管/创建的电子邮件进行测试。

如果您获得了javax.mail.AuthenticationFailedException,尝试使用凭据登录到邮件帐户,gmail要求您键入captcha。成功登录后,您可以使用Java发送邮件。

服务提供商这样做是为了防止垃圾邮件发送者,对于测试,我们创建了一个帐户,而不将其用于任何其他事情。

票数 1
EN

Stack Overflow用户

发布于 2014-04-07 12:32:33

您的资源包是否来自属性文件?您的密码是否有任何特殊字符,可以改变从属性文件读取密码时的解释方式?你有没有打印出你的密码以确保密码在你的程序中是正确的?

根据调试输出,您似乎使用的是JavaMail的GNU版本。请尝试使用JavaMail参考实现代替。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22905845

复制
相关文章
学习用于视觉跟踪的深度紧凑图像表示
在本文中,我们研究了跟踪可能非常复杂背景的视频中运动物体轨迹的挑战性问题。与大多数仅在线学习跟踪对象外观的现有跟踪器相比,我们采用不同的方法,受深度学习架构的最新进展的启发,更加强调(无监督)特征学习问题。具体来说,通过使用辅助自然图像,我们离线训练堆叠去噪自动编码器,以学习对变化更加鲁棒的通用图像特征。然后是从离线培训到在线跟踪过程的知识转移。在线跟踪涉及分类神经网络,该分类神经网络由训练的自动编码器的编码器部分构成,作为特征提取器和附加分类层。可以进一步调整特征提取器和分类器以适应移动物体的外观变化。与一些具有挑战性的基准视频序列的最先进的跟踪器进行比较表明,当我们的跟踪器的MATLAB实现与适度的图形处理一起使用时,我们的深度学习跟踪器更准确,同时保持低计算成本和实时性能单位(GPU)。
代码的路
2022/08/23
1.4K0
学习用于视觉跟踪的深度紧凑图像表示
markdown中的数学公式表示
\iint \limits_d {f(x,y)} {\rm d}x{\rm d}y
哲学家阿多诺
2024/10/15
1240
markdown中的数学公式表示
机器学习 | 线性回归的数学表示
线性回归对已有数据进行建模,可以对未来数据进行预测。有些人觉得线性回归太过简单,甚至不屑于称之为机器学习;另外一些人觉得很多编程库已经对线性回归做了封装,使用时调用一下函数就好,不必了解太多数学推导过程。实际上,线性回归是所有机器学习技术的一个最好起点,很多复杂的机器学习技术以及当前大火的深度神经网络都或多或少基于线性回归。
PP鲁
2020/05/26
6690
机器学习 | 线性回归的数学表示
数学笔记(二)之平面表示
  假设我们知道垂直于平面的法向量n,以及平面上的一点p0,如何使用这两个元素来表示该平面呢?
用户2615200
2018/08/02
5500
Latex数学公式-求导、分数的表示
\frac{}{}:分数表示 \partial: 偏导符号 \mathrm{d}t:正规的导数d(正体)
全栈程序员站长
2022/09/10
1.3K0
以 React 的方式思考
React 很棒的一点是创建应用中引导你思考的过程。这篇文档中,我们将通过运用React创建一个产品搜索列表,来引导你熟悉这个思考过程。
fanzhh
2019/08/20
3.5K0
以 React 的方式思考
从粉笔到软件代码——用数学语言写作
大数据文摘授权转载自zzllrr小乐 作者:Whitney Clavin 译者:zzllrr小乐 在过去的几十年里,当研究人员不得不敲打打字机来撰写他们的科学论文时,他们经常会遇到障碍。这些机器,包括1960年代至1980年代流行的IBM Selectric系列,不包含数学符号的键,例如用于表示微积分的长“S”。当需要输入等式时,研究人员不得不寻找高尔夫球大小的银色球体,其中包含适当的字符以卡入打字机。有些人寻求解决方法来避免麻烦。 “我没有耐心使用IBM Selectric并切换球,”理查德·费曼理论物理
大数据文摘
2023/04/10
4960
从粉笔到软件代码——用数学语言写作
js将列表组装成树结构的两种方式
工作中偶尔就会遇到后端同学丢来一个列表,要我们自己组装成一个树结构渲染到页面上,本文以两种不同方式探索生成树的算法思想。
用户6256742
2024/06/30
2570
js将列表组装成树结构的两种方式
用Python出了3000道数学题,外甥表示要正月剪头!
过年期间发现小外甥已经上小学了,我姐说老师今天给他们布置了寒假作业:每天坚持做乘法和加减法混合运算。
快学Python
2023/03/06
5180
用Python出了3000道数学题,外甥表示要正月剪头!
【数学分析】集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )
文章目录 一、集合概念 二、集合表示 三、常用的数集合 四、集合的表示 一、集合概念 ---- 集合概念 : 具有某种 特定性质 具体的 或 抽象的 对象 汇集的 总体 ; 上述概念中的 " 对象 “ 又称为 ” 集合元素 " ; 二、集合表示 ---- 集合 通常使用 大写字母 \rm S , T , A , B , X , Y 表示 ; 集合元素 使用 小写字母 \rm s , t , a , b , x , y 表示 ; 元素 \rm x 是集合 \rm S 的元素 , 则表示为 \
韩曙亮
2023/03/30
1.4K0
AI正以五种方式彻底颠覆软件测试手段?
AI技术正以五种方式改变软件测试工作测试人员应做好与AI机器人协作的准备,并将其作为能够在软件开发过程当中有效减轻日常工作量的完美助手。人工软件测试方法仍然具备重要价值,但人工智能(简称AI)亦在这一领域内稳步推进。凭借着广受好评的先进功能,人工智能可能将很快消除软件开发当中对手动测试的高度依赖。 人工智能正在改变软件测试以及人类与技术间的交互方式。人工智能将负责推进软件测试过程,而人们则专注于分析公众对于新应用的接受程度。除了帮助人类摆脱沉重的日常工作压力之外,人工智能也正在以下面五种方式彻底颠覆软件测试
机器人网
2018/04/12
9350
AI正以五种方式彻底颠覆软件测试手段?
[C#] 用委托表示回调
回调就是这样一种由服务端向客户端提供异步反馈的机制,它可能会涉及多线程(multithreading),也有可能只是给同步更新提供入口。C#语言用委托来表示回调。
科控物联
2022/03/29
4920
[C#] 用委托表示回调
机器学习中的新数学,加速AI训练离不开数字表示方式和基本计算的变革
近年来 AI 领域的发展令人震惊,但为完成这些壮举而训练神经网络的成本也异常巨大。以大规模语言模型 GPT-3 和艺术生成器 DALL-E 2 为例,它们需要在高性能 GPU 集群上训练数月时间,耗资数百万美元,消耗百万亿计的基本计算。
机器之心
2022/12/16
3510
机器学习中的新数学,加速AI训练离不开数字表示方式和基本计算的变革
以提问的方式提升团队能力
团队成员输出不够,解决问题能力达不到要求时,用职责的办法效果是最差的,指导的话有一定的效果,但是也限制了组员的主观能动性,而且一般来说也不容易被接受,最好的办法是提出引人深思的问题 营造谈话氛围 在谈话开始的时候,问几个轻松随意的小问题,让对方放松下来,以便之后能够畅所欲言。 什么是好的提问 (一句话)问题只有一句话:问题本身必须足够简短且能抓住事物的本质 (第一性)接近本质的提问:比如人际关系方面,本质的问题是关于对方真实想法,真实诉求,而不是表面表达的情绪 (探索)探索式问题:引导更多可能的解决方案
十毛
2022/08/23
2960
幸福,以人工智能的方式
莎莉·埃迪(Sally Adee)发现,具有情商的小玩意将很快和我们绑定在一起,为我们的生活带来欢乐。 “是布莱恩吗?你好吗,布莱恩?”这个声音是由一个巨大的蓝色卡通眼球操控的屏幕发出的,其瞳孔扩张的方式,使它看起来既友善又古怪,令人联想到皮克斯动画公司重新塑造的卡通形象哈尔。 这就是名为EmoSpark的机器人,它正在寻找它的主人。它的摄像头在其视野中搜寻一张脸,然后锁定住了我的脸,再次问我是否是布莱恩,它的呼唤听起来近乎可怜。 EmoSpark的大脑是一个边长90毫米的带有蓝牙和Wi-Fi的立方体
新智元
2018/03/13
9590
幸福,以人工智能的方式
以更好的方式使用 Vue Mixins
Mixin 组件在项目中经常被用来重用一些业务逻辑,但它们有一些不确定的细微差别,这在项目开发中越来越明显。我偶尔也会遇到这种情况,它们会给代码库的重构或新功能的开发带来困难。
前端小智@大迁世界
2022/05/09
5350
以最复杂的方式绕过 UAC
让我们从系统如何防止您绕过最无意义的安全功能开始。默认情况下,如果用户是本地管理员,LSASS 将过滤任何网络身份验证令牌以删除管理员权限。但是有一个重要的例外,如果用户是域用户和本地管理员,则 LSASS 将允许网络身份验证使用完整的管理员令牌。如果说您使用Kerberos在本地进行身份验证,这将是一个问题。这不是微不足道的 UAC 绕过吗?只需以域用户身份向本地服务进行身份验证,您就会获得绕过过滤的网络令牌?
Khan安全团队
2022/03/25
1.9K0
目录树结构
实际项目中后端生成目录树的json是比较常见的,hutool中提供了treeUtil使用起来比较方便。先做个记录
在水一方
2022/06/14
9340
数学不好?可能是你看待数学的方式不对:关于数学的心理表征
大数据文摘作品,转载具体要求见文末 编译团队 | Arcturus 卫青 对于你来说,数学是什么样子的?是由彼此关联的理念所构成的宏伟蓝图,亦或是一大堆混乱的符号组合?这两者的区别影响极大,因为你对数学的看法与你在数学这门课上的成功有着千丝万缕的联系。 我们都十分熟悉乘法表,它在全世界的课堂教育和家庭教育中都占据核心地位。 标准乘法表 你无法从这幅图中挑出任何毛病。这一表格相当直截了当:看起来就像一连串彼此独立的,事实真理的矩阵集合。它一直被反复地学习、记忆和回顾。然而,在受过训练的人眼中,这一表格的
大数据文摘
2018/05/21
8270
使用BigDecimal进行科学计算表示方式的转换
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149549.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
6940

相似问题

如何在NoSQL中表示树结构

20

用代码记录数学逻辑

40

以图解方式表示系统线程体系结构的最佳方法是什么?

10

是否有软件测试的形式化/数学理论?

40

如何以编程方式表示几何线?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文