“是我——又是我。再一次,我有一個小驚喜要給你。”

“今天我要教你如何使用 Java 發送電子郵件。

“讓我們從好消息開始:Java 有一個處理電子郵件的本地庫。

“壞消息是這個庫是Java EE的一部分,而不是Java SE。”

Java EE是JavaSE的擴展版本,其中包含更漂亮的應用程序所需的類。例如,處理電子郵件的應用程序。”

“知道了,那有什麼辦法呢?”

“好吧,我建議你只下載這個庫就可以了。”

“明智地使用 IntelliJ IDEA。”

“創建一個類並將javax.mail.*javax.mail.internet.*庫添加到導入部分。

“然後按Alt+Enter,讓IDEA為你做一切:

“這是下載缺失庫的提議:”

發送電子郵件 - 1

“這是下載窗口的樣子:”

發送電子郵件 - 2

“或者你可以在這裡下載它”

“已下載。下一步是什麼?”

“您需要轉到項目設置(打開模塊設置)的庫部分,然後從下載的存檔中添加 JAR 文件。”

發送電子郵件 - 3

“完畢。”

“下面的線不再是紅色的了嗎?”

import javax.mail.internet.MimeMessage;
import javax.mail.internet.*;

“是的。”

“很好,那我們繼續吧。”

“發送電子郵件需要三個步驟。”

1) 與將用於發送電子郵件的郵件服務器建立連接

2) 創建電子郵件,如有必要,添加附件

3) 發送電子郵件。

“讓我們從頭開始。”

“要用 Java 發送電子郵件,首先需要與郵件服務器建立連接。”

“如果您在服務器上已經有一個電子郵件帳戶,那最好。擔心垃圾郵件,現代郵件服務器不想發送來自匿名用戶的郵件。

“您可以通過調用 javax.mail.Session.getDefaultInstance 方法連接到服務器:”

創建與郵件服務器的連接
Properties props = new Properties();

// Here we need to load data into the props object

Session session = Session.getDefaultInstance(props);

“但是你需要將郵件服務器設置傳遞給這個方法。”

“例如,您可以創建一個 Mail.properties 文件並用所需的設置填充它,例如,如下所示:”

郵件.properties
mail.transport.protocol=smtp
mail.host=smtp.gmail.com
mail.smtp.auth=true
mail.user=arnold@gmail.com
mail.password=strong

“最重要的是指定協議和主機,但您可能需要其他設置,具體取決於郵件服務器的工作方式。”

“您可以簡單地將此數據添加到 Java 代碼中的 Properties 對像中。”

“例如:”

創建與郵件服務器的連接”
Properties props = new Properties();
props.put("mail.transport.protocol", "smtps");
props.put("mail.smtps.host", “smtp.gmail.com”);
props.put("mail.smtps.auth", "true");
props.put("mail.smtp.sendpartial", "true");

Session session = Session.getDefaultInstance(props);

“太好了,我們有一個會話。現在讓我們創建一封電子郵件。”

“這比乍看起來更容易做到。例如:”

創建郵件消息
// Create a message
MimeMessage message = new MimeMessage(session);

// Set the message subject
message.setSubject("Test email!");

// Add the message text
message.setText("Asta la vista, baby!");

// Specify the recipient
message.addRecipient(Message.RecipientType.TO, new InternetAddress("stalone@gmail.com"));

// Specify the delivery date
message.setSentDate(new Date());

“我可以指定任何電子郵件地址作為收件人嗎?”

“可以。而且,您還可以指定任何電子郵件地址作為發件人。”

“酷!我會考慮的。”

“現在我們只需要發送這個消息。”

“首先,我們登錄到服務器,然後發送消息。只需兩行代碼:”

發送一個消息
// Username and password for a Gmail account
String userLogin = “arnold@gmail.com”;
String userPassword = “strong”;

// Sign in on the server:
Transport transport = session.getTransport();
transport.connect("smtp.gmail.com", 465, userLogin, userPassword);

// Send a message:
transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));

“真有意思!我得試試。”

“如果您想知道如何發送帶附件的消息,可以在此處閱讀相關內容。”

“如果你也想了解如何接收郵件,請看這裡。”

“我的天啊。多麼有用的鏈接!”

“是的,我現在要製作自己的電子郵件客戶端。酷!”

“謝謝,艾莉!”