响应服务器535 5.7.1 unab,javax.mail.AuthenticationFailedException:535身份验证失败(#5.7.1)...

博主在使用JavaMailAPI通过SMTP发送邮件时,遇到一个AuthenticationFailedException异常,当尝试使用自己的邮件服务器(mail.sitename.com)而非Gmail时出现问题。已确认用户名和密码正确,但身份验证仍然失败。尝试了各种配置,包括启用或禁用SSL/TLS,设置信任所有主机等,但问题仍未解决。代码中展示了如何设置邮件服务器属性和认证方式。尽管尝试了Stack Overflow上的解决方案,但没有找到有效的解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在使用javamail api自动发送电子邮件Java项目。当我发送这封邮件使用smtp.gmail.com主机,它的作品。但是,当我使用我自己的主机服务器mail.sitename.com ...它显示异常..我的用户名和密码是正确的。请谁能帮助我理清这个问题... 的例外是: -javax.mail.AuthenticationFailedException:535身份验证失败(#5.7.1)

javax.mail.AuthenticationFailedException: 535 authentication failed (#5.7.1)

at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:826)

at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:761)

at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:685)

at javax.mail.Service.connect(Service.java:317)

at javax.mail.Service.connect(Service.java:176)

at javax.mail.Service.connect(Service.java:125)

at javax.mail.Transport.send0(Transport.java:194)

at javax.mail.Transport.send(Transport.java:124)

at com.zenga.servlet.MailNotification.sendMail(MailNotification.java:130)

at com.zenga.servlet.MailNotification.doPost(MailNotification.java:45)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

代码:---

一)我使用的数据抓取,以(电子邮件ID)目的DAO模式 二)JSP文件采取启动并限制获取无连接的那些我要去发送电子邮件.. C)的Servlet文件如下...

package com.zenga.servlet;

import java.io.*;

import java.security.GeneralSecurityException;

import java.util.*;

import com.sun.mail.util.MailSSLSocketFactory;

import com.zenga.dao.DaoFactory;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.mail.*;

import javax.mail.internet.*;

/**

* Servlet implementation class send

*/

@WebServlet("/send")

public class MailNotification extends HttpServlet {

private static final long serialVersionUID = 1L;

@SuppressWarnings("unchecked")

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

HashMaplist = new HashMap();

Set> set = null;

Iterator> itr = null;

int start = 0;

int limit = 0;

Map.Entry me = null;

try {

DaoFactory dao = DaoFactory.getDao();

start = Integer.parseInt(request.getParameter("start"));

limit = Integer.parseInt(request.getParameter("end"));

list = dao.insertLimit(start,limit);

set = list.entrySet();

itr = set.iterator();

while(itr.hasNext()) {

me = (Map.Entry)itr.next();

sendMail(me.getKey(),me.getValue(),request,response);

}

} catch (Exception e) {

}

}

private void sendMail(String toUsername, String to,HttpServletRequest request,HttpServletResponse response) throws IOException, GeneralSecurityException {

final String from = "[email protected]";

final String subject = "a subject";

final String password = "password";

final String host = "mail.sitename.com";

String msg = getMessage(toUsername);

//Set the host SMTP address

/*MailSSLSocketFactory socketFactory= new MailSSLSocketFactory();

socketFactory.setTrustAllHosts(true);

Properties properties=System.getProperties();

properties.put("mail.smtp.host", host);

properties.put("mail.smtp.user", from);

properties.put("mail.smtp.password", password);

//properties.put("mail.smtp.starttls.enable","true");

properties.put("mail.smtp.ssl.socketFactory", socketFactory);

properties.put("mail.smtp.EnableSSL.enable","true");

// properties.put("mail.smtp.ssl.enable","false");

properties.put("mail.smtp.ssl.trust",host);

properties.put("mail.protocol.ssl.trust", host);

properties.put("mail.smtp.socketFactory.port", "587");

properties.put("mail.smtp.socketFactory.class",

"javax.net.ssl.SSLSocketFactory");

properties.put("mail.smtp.port", "587");

properties.put("mail.smtp.auth", "true");

*/

Properties properties=System.getProperties();

properties.put("mail.smtp.host",host);

properties.put("mail.smtp.user",from);

properties.put("mail.smtp.password",password);

properties.put("mail.smtp.port","587");

properties.put("mail.smtp.auth","true");

// properties.put("mail.smtp.starttls.enable","true");

properties.put("mail.smtp.ssl.enable","false");

properties.put("mail.smtp.starttls.enable","false");

Authenticator auth = new Authenticator(){

public PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(from,password);

}

};

Session session=Session.getDefaultInstance(properties,auth);

response.setContentType("text/html");

try{

// create a message

MimeMessage message=new MimeMessage(session);

// set the from and to address

// InternetAddress addressFrom = new InternetAddress(from);

message.setFrom(new InternetAddress(from));

//InternetAddress addressTo = new InternetAddress(to);

message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));

// Setting the Subject and Content Type

message.setSubject(subject);

// create and fill the first message part

MimeBodyPart msgBodypart = new MimeBodyPart();

msgBodypart.setText(msg,"ascii","hmtl");

// create the Multipart and add its parts to it

Multipart multipart=new MimeMultipart();

multipart.addBodyPart(msgBodypart);

// add the Multipart to the message

message.setContent(multipart);

// set the Date: header

message.setSentDate(new Date());

Transport.send(message);

success++;

}

catch(MessagingException me)

{

failed++;

me.printStackTrace();

}

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

}

我已经试过一切,是在评论,但没有任何工作。我读了很多stackoverflow的例子,没有人正确解决它。

+0

用户名格式为“username @ host”还是“username”? –

+0

为什么用户名@主机是必需的..因为我已经手动给它,因为你可以在=“[email protected]”最后的字符串中看到这个; ... –

+0

和问题是身份验证失败....我使用相同的代码只是改变[email protected]和密码=“some_password”和主机= smtp.gmail.com然后代码工作... –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值