[Java]发送QQ邮件时抛出535认证异常

一、抛出异常

异常信息:535 Error: authentication failed

二、确认账号与授权码

由于使用javamail发送邮件需要进行第三方邮箱登录,认证时需要账号授权码。不同的邮箱授权码获取方法不同,这里以QQ邮箱为例:

登陆后点击“设置”->“账户”

 

在“账户”中下翻找到此项,选择“生成授权码”获取16位授权码

 关于账号的填写QQ邮箱有些特殊,仅填账号,不需要后缀。例如:10001@qq.com,红色部分为账号。

三、XML中配置Bean

设置端口、邮箱主机地址、账号、授权码等等,其中SSL是QQ邮箱的特殊需求

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl" lazy-init="false">
	<property name="host" value="smtp.qq.com"/>
	<property name="port" value="25"/>
        <!-- 无后缀账号 -->
	<property name="username" value="10001"/>
        <!-- 16位授权码 -->
	<property name="password" value="abcdabcdabcd"/>
	<property name="javaMailProperties">
		<props>
			<prop key="mail.smtp.auth">true</prop>
                        <!-- 设置超时时间不宜过短,否则将出现连接超时异常 -->
			<!--<prop key="mail.smtp.timeout">25000</prop>-->
			<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
                        <prop key="mail.smtp.socketFactory.port">465</prop>
			<!-- 如果是网易邮箱, mail.smtp.starttls.enable 设置为 false-->
                        <!-- QQ邮箱需要SSL协议,网易不需要 -->
			<prop key="mail.smtp.starttls.enable">true</prop>
		</props>
	</property>
</bean>

四、测试

配置好XML后使用MailSender对象的send()方法发送邮件,成功接收。

 

参考:

[11楼回帖]JSP中使用Javamail发送QQ邮件535错误,提示使用授权码登陆

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Java发送QQ邮件,你需要遵循以下步骤: 1. 导入JavaMailJava Activation Framework (JAF)的相关库。 2. 设置QQ邮箱的SMTP服务器及端口号。QQ邮箱的SMTP服务器是smtp.qq.com,端口号是465或587。 3. 创建一个Properties对象,并设置SMTP服务器相关属性。其中包括邮件服务器地址(mail.smtp.host),端口号(mail.smtp.port),使用的加密类型(mail.smtp.ssl.enable),是否需要身份验证(mail.smtp.auth)等。 4. 创建Session对象,用于与SMTP服务器进行通信。使用Properties对象作为参数来实例化Session对象。 5. 创建一个MimeMessage实例,该实例将包含要发送的电子邮件的内容。 6. 设置发件人地址、收件人地址、邮件主题和正文等属性。 7. 创建一个Transport对象,并使用Session对象和发件人的邮箱账号及密码进行身份验证。 8. 发送邮件,使用Transport对象的静态方法send()来发送MimeMessage实例。 以下是一个使用Java代码发送QQ邮件的示例: ```java import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class QQEmailSender { public static void main(String[] args) throws MessagingException { String from = "你的QQ邮箱地址"; String password = "你的QQ邮箱授权码"; String to = "收件人邮箱地址"; Properties properties = new Properties(); properties.put("mail.smtp.host", "smtp.qq.com"); properties.put("mail.smtp.port", "587"); properties.put("mail.smtp.ssl.enable", "true"); properties.put("mail.smtp.auth", "true"); Session session = Session.getInstance(properties, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(from, password); } }); Message message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject("Java发送QQ邮件"); message.setText("这是使用Java发送的一封QQ邮件。"); Transport.send(message); System.out.println("邮件发送成功!"); } } ``` 请确保替换代码中的"你的QQ邮箱地址"、"你的QQ邮箱授权码"和"收件人邮箱地址"为正确的邮箱地址和授权码,并保证你的QQ邮箱已开启SMTP服务。 这是一个基本的示例,你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值