gpt4 book ai didi

java - 从java发送电子邮件

转载 作者:行者123 更新时间:2023-12-02 07:57:16 25 4
gpt4 key购买 nike

我一直在尝试从我的 servlet 发送电子邮件。我试图看看如何在互联网上做到这一点。但是,在我遇到的所有代码中,没有一个使用发件人密码来发送邮件。

这意味着任何人都可以从任何人的帐户发送电子邮件。我是不是听错了,或者实际情况是什么?

Exception in thread "main" javax.mail.MessagingException: Could not connect to S
MTP host: localhost, port: 465;
nested exception is:
java.net.ConnectException: Connection refused: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:41
2)
at javax.mail.Service.connect(Service.java:288)
at javax.mail.Service.connect(Service.java:169)
at javax.mail.Service.connect(Service.java:189)
at Email1.main(Email1.java:19)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketI
mpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.ja
va:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocket
Impl.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 sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:612)
at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:160
)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:233)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1359)

最佳答案

在某种程度上你是对的。如果 smtp 服务器不需要身份验证,任何人都可以假装成其他人发送电子邮件;-) 幸运的是,大多数服务器确实需要身份验证。

我不太明白你想在这里实现什么。您是否拥有自己的 smtp 服务器,或者您是否希望允许用户从他们已有的帐户(例如从 gmail.com)发送邮件。在这两种情况下,您可能会希望看到 JavaMail API 文档。甚至还有一个示例 JavaMailServlet 您可以用作引用。

这是一个简单的程序,它发送电子邮件并使用用户名/密码向 smtp 服务器进行身份验证(基于 JavaMail 中的示例):

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Mail
{
public static void main(String[] args) throws MessagingException
{
Properties props = new Properties();
props.setProperty("mail.smtp.host", "smtp.example.com");
// props.setProperty("mail.smtp.auth", "true"); // not necessary for my server, I'm not sure if you'll need it
Session session = Session.getInstance(props, null);
Transport transport = session.getTransport("smtp");
transport.connect("user", "password");

Message message = new MimeMessage(session);
message.setSubject("Test");
message.setText("Hello :)");
message.setFrom(new InternetAddress("you@example.com"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("your-friend@example.com"));
transport.sendMessage(message, message.getAllRecipients());
}
}

关于java - 从java发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9446043/

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