当前位置: 首页 > 知识库问答 >
问题:

运行可运行的JAR文件时不发送邮件

马野
2023-03-14

我正在尝试使用包javax.mail.*发送电子邮件

在导出时,我使用“将所需的库打包到生成的JAR中”

谢谢你。

import java.io.IOException;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart; 

public class sadasddas {

    public static String ErrorMsg;
    private static final String MAIL_SERVER = "smtp";
    private static final String SMTP_HOST_NAME = "smtp.mail.com";
    private static final int SMTP_HOST_PORT = 587;
    private static final String USER_NAME = "someting@mail.com";  
    private static final String PASSWORD = "*****************";

    public static void main(String[] args) {
        String[] to = { "dest@mail.com" }; 
        String subject = "Java Send Mail Attachement Example";
        String body = "Welcome to Java Mail!<h1>Hello</h1>";
        String[] attachFiles = new String[3];
        attachFiles[0] = "C:/Til/Result/download.txt";
        attachFiles[1] = "C:/Til/Result/Printer.txt";
        attachFiles[2] = "C:/Til/Result/software.txt";
        try {
            sendEmailWithAttachments(to, subject, body, attachFiles);
            System.out.println("Email Sent....!");
        } catch (Exception ex) {
            System.out.println("Could not send email....!");
            ex.printStackTrace();
        }
    }
    public static void sendEmailWithAttachments(String[] to, String subject, String body, String[] attachFiles) throws AddressException, MessagingException {
       Properties properties = System.getProperties();     
        properties.put("mail.smtp.starttls.enable", "true");
        properties.put("mail.smtp.host", SMTP_HOST_NAME);
        properties.put("mail.smtp.user", USER_NAME);
        properties.put("mail.smtp.password", PASSWORD);
        properties.put("mail.smtp.port", SMTP_HOST_PORT);
        properties.put("mail.smtp.auth", "true");
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(USER_NAME, PASSWORD);
            }
        }; 
        Session session = Session.getInstance(properties, auth);        
        MimeMessage message = new MimeMessage(session);
        try {       
            message.setFrom(new InternetAddress(USER_NAME));
            InternetAddress[] toAddress = new InternetAddress[to.length];
            for( int i = 0; i < to.length; i++ ) {
                toAddress[i] = new InternetAddress(to[i]);
            }
            for( int i = 0; i < toAddress.length; i++) {
                message.addRecipient(Message.RecipientType.TO, toAddress[i]);
            }
            message.setSubject(subject);
            message.setSentDate(new Date());
            MimeBodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setContent(body, "text/html");
            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(messageBodyPart);
            if (attachFiles != null && attachFiles.length > 0) {
                for (String filePath : attachFiles) {
                    MimeBodyPart attachPart = new MimeBodyPart();
                    try {
                        attachPart.attachFile(filePath);
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
                    multipart.addBodyPart(attachPart);
                }
            }
            message.setContent(multipart); 
            Transport transport = session.getTransport(MAIL_SERVER);
            transport.connect(SMTP_HOST_NAME, SMTP_HOST_PORT, USER_NAME, PASSWORD);
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
            System.out.println("Sent Message Successfully....");
        }
        catch (AddressException ae) {
            ae.printStackTrace();
        }
        catch (MessagingException me) {
            me.printStackTrace();
        }
    }
}

共有1个答案

齐阳
2023-03-14

考虑到您的问题和您在评论中所写的内容,问题是您试图通过双击从桌面运行jar文件,这可以使用GUI应用程序,但不能使用控制台应用程序。对于控制台应用程序,您可以创建一个。bat文件,启动cmd并在cmd中运行jar文件。然后可以在桌面上创建一个。bat文件的快捷方式,然后双击运行它。

bat文件应该如下所示:

echo off
start cmd.exe /c
cd /d "d:\path_to_the_jar_file\"
java -jar "My Program.jar"
pause
echo on
 类似资料:
  • 我有一个简单的Java项目,它有一个文件输入。Java语言输入代码。java是这样的- 现在,我已经通过导出在Eclipse中创建了一个可执行的jar文件- 现在,当我尝试通过命令提示符打开它时,它工作得非常好。 但是,当我双击runnable jar文件时,我希望打开命令提示符。这里有什么问题? 谢谢

  • 我正在尝试将我的checkers程序从Eclipse导出到一个可运行的jar文件中。我得到一个jar文件,但它不运行。。。它给了我关于未找到的类的神秘错误消息。jar文件的意义不在于它包含了它所需要的所有类吗?我不知道现在该做什么。 这是我运行罐子时得到的: 知道是的一个内部类可能会有所帮助?有什么问题吗?我在导出向导中尝试了“提取所需库”和“打包所需库”。 我还尝试从命令行使用,但效果不太好。以

  • 所以一切都很好,就像2到3周前一样,突然我所有的jar文件都无法通过双击打开 我检查了我的注册表,但一切正常,关联的. jar应用程序可以使用javaw运行,但我仍然无法双击运行可执行的. jar文件 我可以用javaw -jar文件名在cmd中运行它们.jar但它不适用于我的世界,我不能用那个cmd运行我的世界,我想让它,所以每个可执行文件.jar文件都可以打开双击 我的 java 命令在 cm

  • 当我运行访问目录中其他文件的jar文件时,我得到以下: 线程“main”java.nio.file.nosuchfileException异常:src\filetobeaccessed.txt.lck在sun.nio.fs.windowsException.translateToioException(未知源)在sun.nio.fs.windowsException.reshrowasioExce

  • 我正在Windows Server 2008中使用Jenkins 2.7.1版。我正在java环境中使用java-jar Jenkins运行Jenkins。战争指挥部。 我试图用smtp.office365.com发送邮件-在那里我得到一个错误"com.sun.mail.smtp.SMTPSendFailedExcture:xxx.x.x.xxSMTP;客户端未通过身份验证以在邮件从发送过程中发送

  • 我尝试将一个具有不同库的Java项目导出到一个可运行的JAR文件中,其中包括一个JavaFX GUI和许多不同的东西。当我在eclipse中运行我的项目时,没有问题。但是,当我试图将它导出到一个可运行的JAR文件,然后我尝试启动时,它从来没有打开一个窗口,只有一个进程在后台运行。 我不知道如何更好地描述我的问题。但也许你已经可以帮我了解这些信息了。 (使用eclipse)

  • 我有一个java项目。我想把它导出到可运行的jar文件。 我用eclipse来做这件事。 但当我运行创建的jar文件时,我会收到(系统找不到指定的路径)。 如何在任何地方导出文件夹以运行success jar文件?

  • 我在1-2年前用libGDX做了一个游戏,我可以在eclipse上运行它,它很有效。当我想导出jar文件时,我转到Export-Runnable jar file-这里我选择package required libraries并导出它。