首页 >Java >java教程 >Java 应用程序如何通过 Gmail、Yahoo 或 Hotmail 发送电子邮件?

Java 应用程序如何通过 Gmail、Yahoo 或 Hotmail 发送电子邮件?

Susan Sarandon
Susan Sarandon原创
2024-12-23 22:56:14449浏览

How Can Java Applications Send Emails via Gmail, Yahoo, or Hotmail?

在 Java 应用程序中使用 GMail、Yahoo 或 Hotmail 发送电子邮件

问题:

Java 应用程序可以使用电子邮件帐户像 GMail、Yahoo 或 Hotmail 一样发送电子邮件?如何实现这一点?

答案:

第 1 步:导入 JavaMail API

在继续之前,请确保您已下载所需的 JavaMail API jar 并将其添加到您的

第 2 步:GMail 配置

以下 Java 代码片段演示使用 GMail 帐户发送电子邮件:

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class Main {

    private static String USER_NAME = "*****"; // GMail user name (before "@gmail.com")
    private static String PASSWORD = "********"; // GMail password
    private static String RECIPIENT = "[email protected]";

    public static void main(String[] args) {
        String from = USER_NAME;
        String pass = PASSWORD;
        String[] to = { RECIPIENT }; // List of recipient email addresses
        String subject = "Java send mail example";
        String body = "Welcome to JavaMail!";

        sendFromGMail(from, pass, to, subject, body);
    }

    private static void sendFromGMail(String from, String pass, String[] to, String subject, String body) {
        Properties props = System.getProperties();
        String host = "smtp.gmail.com";
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.user", from);
        props.put("mail.smtp.password", pass);
        props.put("mail.smtp.port", "587");
        props.put("mail.smtp.auth", "true");

        Session session = Session.getDefaultInstance(props);
        MimeMessage message = new MimeMessage(session);

        try {
            // Set email properties
            message.setFrom(new InternetAddress(from));

            // Create InternetAddress array for recipients
            InternetAddress[] toAddress = new InternetAddress[to.length];
            for (int i = 0; i < to.length; i++) {
                toAddress[i] = new InternetAddress(to[i]);
            }

            // Set recipients
            for (InternetAddress addr : toAddress) {
                message.addRecipient(Message.RecipientType.TO, addr);
            }

            // Set subject and body
            message.setSubject(subject);
            message.setText(body);

            // Establish connection and send email
            Transport transport = session.getTransport("smtp");
            transport.connect(host, from, pass);
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
        } catch (AddressException ae) {
            ae.printStackTrace();
        } catch (MessagingException me) {
            me.printStackTrace();
        }
    }
}

注意: 将 USER_NAME、PASSWORD、RECIPIENT、subject 和 body 变量替换为适当的

其他注意事项:

  • 应该在 catch 块中实现正确的错误处理。
  • 您可能需要调整代码对于不同的电子邮件提供商,通过更新服务器地址(主机)和端口(例如,对于雅虎:主机=“smtp.mail.yahoo.com”和端口=“587”)。

以上是Java 应用程序如何通过 Gmail、Yahoo 或 Hotmail 发送电子邮件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn