我有一个java程序(从谷歌复制的)可以使用office365 SMTP发送电子邮件,它作为一个独立的java程序运行良好,但当我在web应用程序的web inf/lib
中将这个java程序部署为jar文件,并从JSP调用该方法时,它抛出了以下错误:
javax.mail.SendFailedException: Sending failed; nested exception is:
javax.mail.MessagingException: 530 5.7.57 SMTP; Client was not
authenticated to send anonymous mail during MAIL FROM
有人能分享一下他们对这个问题的看法吗。java代码:
import java.util.Properties;
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 org.apache.log4j.Logger;
public class SendEmailUsingSMTP {
public static boolean sendEmail(String toAddress, String fromAddress, String userName, String userPassword,String smtpHost, String portNumber, String emailSubject,String emailBody) {
// Recipient's email ID needs to be mentioned.
Logger log = Logger.getLogger(SendEmailUsingSMTP.class);
log.info("toAddress : "+toAddress);
log.info("fromAddress : "+fromAddress);
log.info("userName : "+userName);
log.info("userPassword : "+userPassword);
log.info("smtpHost : "+smtpHost);
log.info("portNumber : "+portNumber);
log.info("emailSubject : "+emailSubject);
log.info("emailBody : "+emailBody);
String to = toAddress;
// Sender's email ID needs to be mentioned
String from = fromAddress;//change accordingly
final String username = userName;//change accordingly
final String password = userPassword;//change accordingly
// Assuming you are sending email through relay.jangosmtp.net
String host = smtpHost;
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.socketFactory.fallback", "false");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.socketFactory.port", portNumber);
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", portNumber);
// Get the Session object.
SMTPAuthenticator authenticator = new SMTPAuthenticator(username, password);
props.put("mail.smtp.submitter", authenticator.getPasswordAuthentication().getUserName());
Session session = Session.getInstance(props, authenticator);
try {
// Create a default MimeMessage object.
Message message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
// Set Subject: header field
message.setSubject(emailSubject);
// Now set the actual message
message.setText(emailBody);
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
return true;
}
}
所以如果有人有这样的问题:---
javax。邮政MessaginException:530 5.7.57 SMTP;客户端未通过身份验证,无法在从发送邮件期间发送匿名邮件
在Linux操作系统上使用时,只需执行以下步骤:-使用sudo编辑默认的Jenkins文件,因为它是只读文件。
sudo vim /etc/default/jenkins
加上这两行:--
JAVA_ARGS="-Xmx2048m -XX:MaxPermSize=512m -Djava.awt.headless=true"
JAVA_ARGS="-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true"
编辑/追加文件后,重新启动Jenkins。
命令:-sudo /etc/init.d/Jenkins重启
现在测试你的配置,希望你能收到成功发送的电子邮件。
设置smtp。斯塔特尔斯。启用
至真
,主机至smtp。Office 365。com为我解决了类似的问题。
我用你的代码测试了它,只使用了这3个属性:
props.put("mail.smtp.auth",true);
props.put("mail.smtp.starttls.enable",true);
props.put("mail.smtp.host", host);
主机:
smtp。Office 365。com
,我可以从我的账户发送电子邮件。
整个功能:
public static boolean sendEmail(String toAddress, String fromAddress, String userName, String userPassword,String smtpHost, String emailSubject,String emailBody) {
// Recipient's email ID needs to be mentioned.
String to = toAddress;
// Sender's email ID needs to be mentioned
String from = fromAddress;//change accordingly
final String username = userName;//change accordingly
final String password = userPassword;//change accordingly
// Assuming you are sending email through relay.jangosmtp.net
String host = smtpHost;
Properties props = new Properties();
props.put("mail.smtp.auth",true);
props.put("mail.smtp.starttls.enable",true);
props.put("mail.smtp.host", host);
// Get the Session object.
SimpleMailAuthenticator authenticator = new SimpleMailAuthenticator(username, password);
Session session = Session.getInstance(props, authenticator);
try {
// Create a default MimeMessage object.
Message message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
// Set Subject: header field
message.setSubject(emailSubject);
// Now set the actual message
message.setText(emailBody);
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
return true;
}
验证者呢
class SimpleMailAuthenticator extends Authenticator {
String userName;
String password;
PasswordAuthentication authentication;
public SimpleMailAuthenticator(String userName,String password) {
super();
this.userName = userName;
this.password = password;
authentication = new PasswordAuthentication(userName, password);
}
@Override
public PasswordAuthentication getPasswordAuthentication() {
return authentication;
}
}
您可以尝试以下配置,因为它适用于我:
“mail.smtp.starttls.enable”:“true”
此外,我还使用了主机:
host="Outlook.office365.com"
希望这对你或其他人有所帮助。
这仅适用于(smtp.office365.com)smtp。
我目前拥有的代码是: 我试图发送到的电子邮件地址托管在Office 365的Outlook上。我们可能需要稍后更改特定地址,但它们可能配置相同。 但是,每当我尝试运行命令时,都会收到同样的错误,错误的全文是: 我已经尝试了一些不同的方法,比如在25到587之间切换端口,将主机更改为office365的,或者将和切换为true或false。但是我总是看到同样的错误。我还遗漏了什么吗?
我正在用asp发送outlook电子邮件。净c#。 当我运行这个程序时,我在(smtp.Send(fromAddress,toAddress,subject,body);)上遇到了一个错误我在网上搜索,试图解决问题,但什么也没找到。请帮忙。我真的很感激。
我正在编写一个Rust应用程序,它将通过启用了SMTP功能的Exchange服务器发送电子邮件。根据微软的网页,需要的设置是: 服务器地址smtp.office365.com 端口587 已启用StartTLS 邮件帐户登录凭据 网络邮件服务的POP/IMAP设置证实了这一点。 这是我的代码(带有一些审查): 当我编译和运行代码时,它给了我这个错误: 错误(永久(响应{代码:代码{严重性:Perm
我必须用我的网络应用程序发送邮件。给定下面显示< code >的代码,SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应是: 5.7.57 SMTP;客户端在邮件发送过程中未通过身份验证发送匿名邮件。 帮我找到一个合适的解决方案。非常感谢。 代码:
我目前有一个邮件服务器正在运行。我可以通过 mywebsite.com/roundcube/ 从这个网站我可以发送和接收电子邮件适当。日志显示所有的邮件进出都很好。我从这里发到我的gmail账户,然后又发回来。 然而,我真正想做的是使用javax mail从java发送一些邮件。