java - Linux 中的 SMTP/POP3 客户端

标签 java c++ linux digital-certificate

我想在linux中开发一个STMP/POP3客户端(仅限客户端)。我想使用数字证书加密数据(我将尝试提供端到端安全性)。我还想创建一个简单的界面(带有文本字段、发送按钮、收件箱等)。我的问题是:我应该用java(如果可能的话)还是C/C++(在这种情况下我必须使用一些工具来实现接口(interface)->QT)。你怎么认为? 我的第二个问题:如果您有任何想法/建议或有用的链接(或任何对我有帮助的东西),我将不胜感激。

最佳答案

关于你的第一个问题

should i do this in java(if it's possible) or C/C++

你可以使用任何你觉得舒服的语言,如果你想要我的建议,我建议你使用 java,因为使用 Swing 或 Javafx 创建图形界面非常容易,并且有很多库可以帮助实现你的目标。

关于你的第二个问题

if you have any ideas/recommendation or helpful links

您可以在此网站中找到一个有用的教程,它将从头到尾指导您:JavaMail API Tutorial - Tutorialspoint

这是一个简单的应用程序界面,可以从使用 JavaFx 创建的项目开始。

Simple Application UI Using JavaFX Desktop Screen-shot

Main.java

package application;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.fxml.FXMLLoader;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            AnchorPane root = (AnchorPane)FXMLLoader.load(getClass().getResource("Email.fxml"));
            Scene scene = new Scene(root,400,400);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

EmailController.java

package application;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;

public class EmailController {

    @FXML
    private ResourceBundle resources;

    @FXML
    private URL location;

    @FXML
    private TextField fromField;

    @FXML
    private TextField toField;

    @FXML
    private TextField loginField;

    @FXML
    private PasswordField passwordField;

    @FXML
    private TextField subjectField;

    @FXML
    private TextArea messageField;

    @FXML
    private Button deleteButton;

    @FXML
    private Button sendButton;

    @FXML
    void initialize() {


    }
}

Email.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.PasswordField?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?>


<fx:root type="AnchorPane" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.111" fx:controller="application.EmailController">
   <children>
      <Pane prefHeight="522.0" prefWidth="761.0">
         <children>
            <VBox prefHeight="522.0" prefWidth="761.0">
               <children>
                  <GridPane gridLinesVisible="true">
                    <columnConstraints>
                      <ColumnConstraints hgrow="SOMETIMES" maxWidth="328.0" minWidth="10.0" prefWidth="131.0" />
                      <ColumnConstraints hgrow="SOMETIMES" maxWidth="635.0" minWidth="10.0" prefWidth="630.0" />
                    </columnConstraints>
                    <rowConstraints>
                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                    </rowConstraints>
                     <children>
                        <Label alignment="CENTER_RIGHT" prefHeight="23.0" prefWidth="136.0" text="From : ">
                           <font>
                              <Font name="Segoe UI" size="18.0" />
                           </font>
                        </Label>
                        <TextField fx:id="fromField" GridPane.columnIndex="1" />
                        <Label alignment="CENTER_RIGHT" prefHeight="17.0" prefWidth="134.0" text="To : " textAlignment="CENTER" GridPane.rowIndex="1">
                           <font>
                              <Font name="Segoe UI" size="18.0" />
                           </font>
                        </Label>
                        <Label alignment="CENTER_RIGHT" prefHeight="17.0" prefWidth="134.0" text="Login : " textAlignment="CENTER" GridPane.rowIndex="2">
                           <font>
                              <Font name="Segoe UI" size="18.0" />
                           </font>
                        </Label>
                        <TextField fx:id="toField" GridPane.columnIndex="1" GridPane.rowIndex="1" />
                        <TextField fx:id="loginField" GridPane.columnIndex="1" GridPane.rowIndex="2" />
                        <Label alignment="CENTER_RIGHT" prefHeight="17.0" prefWidth="134.0" text="Password : " textAlignment="CENTER" GridPane.rowIndex="3">
                           <font>
                              <Font name="Segoe UI" size="18.0" />
                           </font>
                        </Label>
                        <PasswordField fx:id="passwordField" GridPane.columnIndex="1" GridPane.rowIndex="3" />
                     </children>
                  </GridPane>
                  <GridPane prefHeight="240.0" prefWidth="681.0">
                    <columnConstraints>
                      <ColumnConstraints hgrow="SOMETIMES" maxWidth="659.0" minWidth="10.0" prefWidth="152.0" />
                      <ColumnConstraints hgrow="SOMETIMES" maxWidth="722.0" minWidth="10.0" prefWidth="609.0" />
                    </columnConstraints>
                    <rowConstraints>
                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                        <RowConstraints />
                        <RowConstraints minHeight="10.0" prefHeight="30.0" />
                    </rowConstraints>
                     <children>
                        <Label alignment="CENTER_RIGHT" prefHeight="23.0" prefWidth="150.0" text="Subject : ">
                           <font>
                              <Font name="Segoe UI" size="18.0" />
                           </font>
                        </Label>
                        <TextField fx:id="subjectField" GridPane.columnIndex="1" />
                        <Label alignment="CENTER_RIGHT" prefHeight="23.0" prefWidth="150.0" text="Message : " GridPane.hgrow="ALWAYS" GridPane.rowIndex="1" GridPane.vgrow="ALWAYS">
                           <font>
                              <Font name="Segoe UI" size="18.0" />
                           </font>
                        </Label>
                        <TextArea fx:id="messageField" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1" GridPane.rowSpan="2">
                           <GridPane.margin>
                              <Insets top="10.0" />
                           </GridPane.margin>
                        </TextArea>
                     </children>
                     <VBox.margin>
                        <Insets left="30.0" right="30.0" top="20.0" />
                     </VBox.margin>
                  </GridPane>
                  <Pane prefHeight="200.0" prefWidth="200.0">
                     <children>
                        <Button fx:id="deleteButton" layoutX="220.0" layoutY="30.0" mnemonicParsing="false" prefHeight="30.0" prefWidth="150.0" text="Delete">
                           <font>
                              <Font name="Segoe UI" size="24.0" />
                           </font>
                        </Button>
                        <Button fx:id="sendButton" layoutX="450.0" layoutY="30.0" mnemonicParsing="false" prefHeight="30.0" prefWidth="150.0" text="SEND">
                           <font>
                              <Font name="Segoe UI" size="24.0" />
                           </font>
                        </Button>
                     </children>
                  </Pane>
               </children>
            </VBox>
         </children>
      </Pane>
   </children>
</fx:root>

关于java - Linux 中的 SMTP/POP3 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43045743/

相关文章:

java - 如何修改代码,使其也与带有属性的 html 标签相匹配?

java - 文件系统的 JNDI 服务提供者

java - 为什么必须在访问字段之前调用 super 构造函数?

java - 如何在 TreeSet 中使用自定义类?

c++ - std::list 按索引删除元素

python - 使用 pyinstaller 从 python 脚本为尽可能多的 Linux 发行版创建二进制文件

c++ - 使用 SSE 进行比较和提取

c++ - 空洞的大小是多少?

linux - Iptables:重定向到端口 8080 并仅接受一个 IP 地址

linux - 找不到 lippicv 但 $LD_LIBRARY_PATH 列出了它