首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SSMTP和ProcessBuilder

使用SSMTP和ProcessBuilder
EN

Stack Overflow用户
提问于 2018-03-11 18:33:24
回答 1查看 45关注 0票数 0

我目前正在为学校做一个项目,我正在尝试使用sSMTP来使用文本文件从java发送电子邮件给用户。从命令行执行,ssmtp email@gmail.com < msg.txt工作得很好,并将msg.txt中包含的信息发送给我。但是,当我尝试使用ProcessBuilder在java中进行操作时,它不会发送电子邮件。

代码语言:javascript
复制
`ProcessBuilder builder = new ProcessBuilder;
 builder.command("ssmtp", "email@gmail.com", "<", "msg.txt");
 Process p = builder.start();`

我相信它不喜欢我试图在msg.txt中播放的地方。如果有人知道更好的方法,那就太好了。我还没有找到任何东西,我自己也不知道该怎么做

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-11 19:14:39

您可以读取msg.txt并将其写入进程‘OutputStream’,而不是试图依赖shell的重定向功能(正如您看到的那样,该功能不起作用)。这将是一回事,但在代码(这也是一个更好的解决方案)。

与…有关的东西

代码语言:javascript
复制
Process p = new ProcessBuilder("ssmtp").start();
PrintStream out = new PrintStream(p.getOutputStream());
String line = null;
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("msg.txt")));
while((line = in.readLine()) != null)
    out.println(line);
out.close();
in.close();

但是,,如果您想要使用shell重定向(我不建议使用任何严重的重定向),则需要执行实际执行重定向的程序,即bash。以下是其中的诀窍:

代码语言:javascript
复制
new ProcessBuilder("bash", "ssmtp", "email@gmail.com", "<", "msg.txt").start();

正如dave_thompson_085所评论的那样,编程重定向甚至更容易。这几天事情确实很容易!

代码语言:javascript
复制
new ProcessBuilder("ssmtp", "email@gmail.com").redirectInput(new File("msg.txt")).start();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49223605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档