2017-03-27 168 views
-1

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

回答

1

关于你的第一个问题

我应该这样做在Java中(如果可能的话)或C/C++

您可以使用您感到舒适与任何语言,如果你想要我建议我建议你使用java,因为使用Swing或Javafx创建图形界面非常简单,并且有很多库可以帮助实现你的目标。

而关于你的第二个问题

,如果您有任何意见/建议或有用的链接

你可以找到一个有用的教程,指导您从一开始就告诉本网站到底: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> 
+0

谢谢您的意见! –