gpt4 book ai didi

java - 无法使用 JavaMail api 发送邮件

转载 作者:行者123 更新时间:2023-11-29 05:47:03 25 4
gpt4 key购买 nike

我正在尝试使用以下代码发送邮件:-

java.awt.EventQueue.invokeLater(
new Runnable() {

@Override
public void run() {

new SwingWorker<Void, Integer>() {

String to = "xx@gmail.com";
// Sender's email ID needs to be mentioned
String from = "xexx@gmail.com";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties
// Properties properties = System.getProperties();

// Setup mail server


protected Void doInBackground() throws Exception {
try {
Properties properties = new Properties();
properties.put("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.starttls.enable", "true");
// Get the default Session object.
Session session = Session.getDefaultInstance(properties);

// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);

// Set From: header field of the header.
message.setFrom(new InternetAddress(from));

// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));

// Set Subject: header field
message.setSubject("This is the Subject Line!");

// Now set the actual message
message.setText("Message" + jTextField1.getText() + " xx " + jTextField2.getText());

// Send message
Transport.send(message);

} catch (Exception x) {
x.printStackTrace();
}
return null;
}

protected void process() {

}

protected void done() {
try {

JOptionPane.showMessageDialog(null, "You'll get a response from our team shortly !");

} catch (Exception x) {
}

}
}.execute();
}

在调用上述代码时出现异常:

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
at javax.mail.Service.connect(Service.java:295)
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 ims.Activation$5$1.doInBackground(Activation.java:374)
at ims.Activation$5$1.doInBackground(Activation.java:327)
at javax.swing.SwingWorker$1.call(SwingWorker.java:296)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at javax.swing.SwingWorker.run(SwingWorker.java:335)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.net.SocketException: Permission denied: connect
at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)
... 15 more

我该如何解决这个问题?

最佳答案

除非您在本地环境中运行邮件服务器,否则您将需要通过其他邮件属性指定一个邮件服务器:

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

例如,如果您使用 Gmail 中继,您将:

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

此外,您需要为 session 设置 mail.smtp.auth 属性。

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

根据您最终使用的主机,您可能还需要提供身份验证信息。例如,再次使用 Gmail 中继:

Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("someUserName", "somePassword");
}
}
);

关于java - 无法使用 JavaMail api 发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15484940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com