Cara menggunakan MySQL dan Java untuk melaksanakan fungsi penghantaran e-mel yang mudah
Dalam era Internet hari ini, e-mel digunakan secara meluas oleh individu dan perniagaan Oleh itu, melaksanakan fungsi penghantaran e-mel yang mudah sangat berguna untuk banyak pembangun.
Artikel ini akan memperkenalkan cara menggunakan MySQL dan Java untuk melaksanakan fungsi penghantaran e-mel yang mudah, dan menyediakan contoh kod khusus.
Pertama, kita perlu mencipta pangkalan data MySQL dan mencipta jadual di dalamnya untuk menyimpan maklumat berkaitan e-mel . Dalam contoh ini, kami menganggap nama pangkalan data ialah "mel" dan nama jadual ialah "mel".
Berikut ialah pernyataan SQL untuk mencipta struktur jadual:
CREATE DATABASE mail; USE mail; CREATE TABLE mails ( id INT PRIMARY KEY AUTO_INCREMENT, sender VARCHAR(50), receiver VARCHAR(50), subject VARCHAR(100), body TEXT, sent_date DATETIME );
import java.util.Properties; import javax.mail.Authenticator; 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 javax.sql.DataSource; import javax.naming.InitialContext; import javax.naming.NamingException; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ScalarHandler; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; public class MailSender { // 邮件服务器地址 private static final String SMTP_HOST = "smtp.example.com"; // 邮件服务器端口 private static final int SMTP_PORT = 587; // 发送者邮箱地址 private static final String SENDER_EMAIL = "sender@example.com"; // 发送者邮箱密码 private static final String SENDER_PASSWORD = "password"; // 数据库连接池 private static DataSource dataSource; // 初始化数据库连接池 static { dataSource = setupDataSource(); } // 获取数据库连接 private static DataSource setupDataSource() { MysqlDataSource ds = new MysqlDataSource(); ds.setURL("jdbc:mysql://localhost:3306/mail"); ds.setUser("root"); ds.setPassword("password"); return ds; } // 发送邮件 public void sendMail(String receiver, String subject, String body) throws MessagingException, NamingException { // 创建会话 Properties props = new Properties(); props.put("mail.smtp.host", SMTP_HOST); props.put("mail.smtp.port", SMTP_PORT); Session session = Session.getInstance(props, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(SENDER_EMAIL, SENDER_PASSWORD); } }); // 创建邮件 MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(SENDER_EMAIL)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiver)); message.setSubject(subject); message.setText(body); // 发送邮件 Transport.send(message); // 将邮件记录插入数据库 try (Connection conn = dataSource.getConnection()) { String sql = "INSERT INTO mails(sender, receiver, subject, body, sent_date) VALUES (?, ?, ?, ?, NOW())"; Object[] params = { SENDER_EMAIL, receiver, subject, body }; QueryRunner runner = new QueryRunner(); runner.insert(conn, sql, new ScalarHandler<>(), params); } } }
public class Main { public static void main(String[] args) { MailSender sender = new MailSender(); try { String receiver = "receiver@example.com"; String subject = "邮件主题"; String body = "邮件内容"; sender.sendMail(receiver, subject, body); System.out.println("邮件发送成功!"); } catch (MessagingException | NamingException e) { e.printStackTrace(); } } }
Atas ialah kandungan terperinci Cara menggunakan MySQL dan Java untuk melaksanakan fungsi penghantaran e-mel yang mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!