java網路程式設計三:基於SMTP的郵件傳送客戶端
1、SMTP簡介
2、傳送過程
3、原始碼示例
- <span style="font-size:16px;">package demo.net;
- import java.awt.BorderLayout;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.net.InetAddress;
- import java.net.Socket;
- import java.util.Scanner;
- import javax.swing.*;
- /*
- * 傳送郵件客戶端
- */
- public class SendMail extends JFrame {
- private JTextField from;
- private JTextField to;
- private JTextField server;
- private JTextArea message;
- private JTextArea comm;
- private Scanner in;
- private PrintWriter out;
- public SendMail() {
- // 設定frame
- setSize(500, 600);
- setTitle("send mail");
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setVisible(true);
- this.setLocationRelativeTo(null);
- // 往frame中新增元件
- JPanel p1 = new JPanel(new GridLayout(3, 2));
- p1.add(new JLabel("from:"));
- from = new JTextField(20);
- p1.add(from);
- p1.add(new JLabel("to:"));
- to = new JTextField(20);
- p1.add(to);
- p1.add(new JLabel("SMTP server:"));
- server = new JTextField(20);
- p1.add(server);
- add(p1, BorderLayout.NORTH);
- JPanel p2 = new JPanel(new GridLayout(2, 1));
- message = new JTextArea();
- p2.add(new JScrollPane(message));
- comm = new JTextArea();
- comm.setEditable(false);
- p2.add(new JScrollPane(comm));
- add(p2, BorderLayout.CENTER);
- JPanel p3 = new JPanel();
- JButton sendButton = new JButton("Send");
- p3.add(sendButton);
- add(p3, BorderLayout.SOUTH);
- // 給傳送按鈕註冊監聽器
- sendButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- comm.setText("");
- sendMail(server.getText().trim(), from.getText().trim(), to
- .getText().trim(), message.getText());
- }
- });
- }
- // 傳送郵件
- public void sendMail(String server, String from, String to, String message) {
- try {
- Socket s = new Socket(server, 25);
- try {
- in = new Scanner(s.getInputStream());
- out = new PrintWriter(s.getOutputStream(), true/* 表示自動重新整理 */);
- String hostName = InetAddress.getLocalHost().getHostName();
- receive();
- send("HELLO" + hostName);// 握手,成功返回220表示服務就緒
- receive();
- send("MAIL FROM:<" + from + ">");//發件人郵箱
- receive();
- send("RCPT TO:<" + to + ">");//收件人郵箱
- receive();
- send("DATA");//表示開始發郵件內容了
- receive();
- send(message);//傳送郵件你內容
- send(".");
- receive();
- send("QUIT");
- } finally {
- s.close();
- }
- } catch (IOException e) {
- comm.append("Error: " + e);
- }
- }
- // 傳送
- private void send(String s) {
- comm.append(s + '\n');
- out.print(s);
- out.print("\r\n");
- out.flush();
- }
- // 接收
- private void receive() {
- comm.append(in.nextLine() + '\n');
- }
- public static void main(String[] args) {
- new SendMail();
- }
- }
- </span>
相關文章
- Java網路程式設計:QQ郵件傳送客戶端程式設計Java程式設計客戶端
- Java實現QQ郵件傳送客戶端Java客戶端
- 使用java語言基於SMTP協議手寫郵件客戶端Java協議客戶端
- python實現基於smtp傳送郵件Python
- linux下用C編寫的基於smtp的郵件傳送程式Linux
- Jmeter——SMTP Sampler傳送郵件JMeter
- Python SMTP傳送郵件Python
- 配置mail使用SMTP傳送郵件AI
- Python使用SMTP傳送郵件Python
- 利用UTL_SMTP傳送郵件
- 3 個很酷的基於文字的郵件客戶端客戶端
- WPForms和 WP Mail SMTP – 最好的WordPress SMTP郵件傳送外掛ORMAI
- 以程式設計方式設定用於從FastReport.Net傳送預設電子郵件客戶端設定程式設計AST客戶端
- 在Python如何使用SMTP傳送郵件Python
- 【python】用SMTP模組傳送帶附件的郵件Python
- 014 Rust 網路程式設計,郵件傳送的示例Rust程式設計
- 發SMTP而不是微軟預設的MAPI郵件微軟API
- 純java開發的電子郵件客戶端Java客戶端
- 傳真百科:電子傳真郵件客戶端客戶端
- Java實驗——基於GUI的網路通訊程式設計JavaGUI程式設計
- 郵件客戶端的配置使用客戶端
- SMTP協議初探(二)----linux下c程式設計實現發郵件協議LinuxC程式程式設計
- ThinkPHP_phpmailer使用外部認證SMTP傳送郵件PHPAI
- SMTP協議解讀以及如何使用SMTP協議傳送電子郵件協議
- 一次性解決python smtp 傳送outlook郵件,163郵件,qq郵件等等.Python
- LucaMail: 基於ElectronJs的跨平臺的桌面電子郵件客戶端AIJS客戶端
- java郵件傳送Java
- java傳送郵件Java
- python SMTP郵件服務Python
- SMTP操作使用詳解並透過python進行smtp郵件傳送示例Python
- 一次郵件傳送協議SMTP問題排查協議
- Java Mail 郵件傳送(二):簡單封裝的郵件傳送JavaAI封裝
- 在VC中呼叫預設的電子郵件程式傳送郵件 (轉)
- 軟體測試學習教程——Python SMTP傳送郵件Python
- Linux 上使用 Gmail SMTP 伺服器傳送郵件通知LinuxAI伺服器
- mailx 或telnet 使用指定SMTP伺服器傳送郵件AI伺服器
- cisco pix防火牆接管smtp的問題,Outlook express不能傳送郵件防火牆Express
- postfix郵件系統之郵件客戶端無法收郵件問題解析客戶端